home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 51 / Amiga Format CD51 (2000-03-10)(Future Publishing)(GB)[!][issue 2000-04].iso / -in_the_mag- / banging_the_metal / qdos / qdos4amiga2 / romsrc / sys / basic5_asm < prev    next >
Text File  |  2000-01-03  |  89KB  |  3,830 lines

  1. ;/*beginfile BASIC5_asm
  2. ; --------------------------------------------------------------
  3. ; BASIC5_asm - BASIC bits
  4. ;        - last modified 27/08/95
  5. ; QDOS-Amiga sources by Rainer Kowallik
  6. ;    ...some changes by Mark J Swift
  7. ; --------------------------------------------------------------
  8. ; create coded program / code line #
  9. L08474:
  10.     JSR    L04E4C(PC)    ;*/undomodify BSR L04E4C
  11.     MOVEA.L    BV_RIP(A6),A1    ;arith stack
  12.     JSR    CN_DTOI(PC)    ;*/undomodify BSR CN_DTOI
  13.     BNE.S    L084A4
  14.     TST.W    0(A6,A1.L)
  15.     BLE.S    L084A4
  16.     TST.B    BV_UNRVL(A6)    ;Need to unravel
  17.                 ;($ff) or not (0)
  18.     BEQ.S    L08496
  19. L0848E    ADDA.W    #$C,A7
  20.     MOVEQ    #1,D0
  21.     RTS
  22. L08496    MOVEQ    #4,D1
  23.     MOVEQ    #-$73,D4
  24.     MOVE.W    0(A6,A1.L),D5
  25.     JSR    L08E0A(PC)    ;*/undomodify BSR L08E0A
  26.     ADDQ.L    #2,(A7)
  27. L084A4    RTS
  28. L084A6:
  29.     DC.L    $04050709,$0C012D01,$2B027E7E,$134E4F54
  30. L084B6:
  31.     LEA    L084A6(PC),A2
  32.     JSR    L08748(PC)    ;*/undomodify BSR L08748
  33.     BRA.S    L084C8
  34.     MOVEQ    #-$7A,D4
  35.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  36.     ADDQ.L    #2,(A7)
  37. L084C8    RTS
  38. L084CA:
  39.     MOVEQ    #1,D3
  40.     BRA.S    L084D0
  41. L084CE:
  42.     MOVEQ    #0,D3
  43. L084D0    MOVEA.L    A0,A3
  44.     JSR    L08706(PC)    ;*/undomodify BSR L08706
  45.     BRA.S    L084F8
  46.     MOVE.L    A0,D5
  47.     SUB.L    A3,D5
  48.     CMPI.W    #$00FF,D5
  49.     BGT.S    L084F8
  50.     MOVE.L    A0,-(A7)
  51.     JSR    L08622(PC)    ;*/undomodify BSR L08622
  52.                 ;check name in buffer and
  53.                 ;get address of name list
  54.     BRA.S    L084F6        ;error
  55.     MOVEA.L    (A7)+,A0
  56.     MOVEQ    #-$78,D4
  57.     JSR    L08E0A(PC)    ;*/undomodify BSR L08E0A
  58.     ADDQ.L    #2,(A7)
  59.     RTS
  60. L084F6    MOVEA.L    (A7)+,A0
  61. L084F8    RTS
  62. L084FA:
  63.     DC.W    $1617,$191B,$1D1F,$2224,$2729,$2C2F,$3134,$373A
  64.     DC.W    $3C3E,$4145,$494D
  65.     DC.B    $51
  66.     DC.B    $01,'+'
  67.     DC.B    $01,'-'
  68.     DC.B    $01,'*'
  69.     DC.B    $01,'/'
  70.     DC.B    $02,'>='
  71.     DC.B    $01,'>'
  72.     DC.B    $02,'=='
  73.     DC.B    $01,'='
  74.     DC.B    $02,'<>'
  75.     DC.B    $02,'<='
  76.     DC.B    $01,'<'
  77.     DC.B    $02,'||'
  78.     DC.B    $02,'&&'
  79.     DC.B    $02,'^^'
  80.     DC.B    $01,'^'
  81.     DC.B    $01,'&'
  82.     DC.B    $12,'OR'
  83.     DC.B    $13,'AND'
  84.     DC.B    $13,'XOR'
  85.     DC.B    $13,'MOD'
  86.     DC.B    $13,'DIV'
  87.     DC.B    $15,'INSTR'
  88.     DC.B    $00
  89. L08552:
  90.     LEA    L084FA(PC),A2
  91.     JSR    L08748(PC)    ;*/undomodify BSR L08748
  92.     BRA.S    L08564
  93.     MOVEQ    #-$7B,D4
  94.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  95.     ADDQ.L    #2,(A7)
  96. L08564    RTS
  97. L08566    ; table of 5 separators
  98.     DC.B    $05,$06,$08,$0A
  99.     DC.W    $0C0E
  100.     DC.B    $01,',',$01,';',$01,'\'
  101.     DC.B    $01,'!',$12,'TO'
  102.     DC.B    $00
  103. L08578:
  104.     LEA    L08566(PC),A2
  105.     JSR    L08748(PC)    ;*/undomodify BSR L08748
  106.     BRA.S    L0858A        ;error
  107.     MOVEQ    #-$72,D4
  108.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  109.     ADDQ.L    #2,(A7)
  110. L0858A    RTS
  111. L0858C    MOVEQ    #0,D1
  112.     MOVEQ    #0,D5
  113. L08590    ADDQ.W    #1,D5
  114.     MOVE.B    0(A6,A0.L),D1
  115.     ADDQ.W    #1,A0
  116.     CMPI.B    #$20,D1
  117.     BEQ.S    L08590
  118.     SUBQ.W    #1,A0
  119.     SUBQ.W    #1,D5
  120.     BEQ.S    L085AA
  121.     MOVEQ    #-$80,D4
  122.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  123. L085AA    RTS
  124. L085AC:
  125.     MOVE.B    0(A6,A0.L),D2
  126.     CMPI.B    #$22,D2
  127.     BEQ.S    L085BC
  128.     CMPI.B    #$27,D2
  129.     BNE.S    L085DE
  130. L085BC    LEA    1(A0),A2
  131.     MOVEQ    #-1,D5
  132.     MOVEQ    #$0A,D3
  133. L085C4    ADDQ.W    #1,A0
  134.     ADDQ.W    #1,D5
  135.     MOVE.B    0(A6,A0.L),D1
  136.     CMP.B    D3,D1
  137.     BEQ.S    L085DE
  138.     CMP.B    D2,D1
  139.     BNE.S    L085C4
  140.     ADDQ.W    #1,A0
  141.     MOVEQ    #-$75,D4
  142.     JSR    L08E38(PC)    ;*/undomodify BSR L08E38
  143.     ADDQ.L    #2,(A7)
  144. L085DE    RTS
  145. L085E0:
  146.     JSR    L0872C(PC)    ;*/undomodify BSR L0872C
  147.     BNE.S    L085F2
  148.     MOVEA.L    BV_TKP(A6),A3    ;token list running pointer
  149.     CMPI.B    #$80,-$02(A6,A3.L)
  150.     BNE.S    L0860A
  151. L085F2    MOVEA.L    A0,A2
  152.     MOVE.L    BV_BFP(A6),D5    ;buffer running pointer
  153.     SUBQ.L    #1,D5
  154.     MOVEA.L    D5,A0
  155.     SUB.L    A2,D5
  156.     BEQ.S    L08608
  157.     MOVEQ    #-$74,D4
  158.     MOVEQ    #0,D2
  159.     JSR    L08E38(PC)    ;*/undomodify BSR L08E38
  160. L08608    ADDQ.L    #2,(A7)
  161. L0860A    RTS
  162. L0860C:
  163.     JSR    L04E4C(PC)    ;*/undomodify BSR L04E4C
  164.     MOVEA.L    BV_RIP(A6),A1    ;arith stack
  165.     JSR    CN_DTOF(PC)    ;*/undomodify BSR CN_DTOF
  166.     BNE.S    L08620
  167.     JSR    L08E12(PC)    ;*/undomodify BSR L08E12
  168.     ADDQ.L    #2,(A7)
  169. L08620    RTS
  170. ; --------------------------------------------------------------
  171. ; A3 contains pointer to Buffer with name , D5 contains length
  172. ; of name.
  173. ; A2 contains pointer to table to compare with this routine
  174. ; checks the name in buffer, and put it into the name list.
  175. ; return address of name table in A2
  176. ; --------------------------------------------------------------
  177. L08622:
  178.     MOVE.L    A2,-(A7)     ;save address of table to
  179.                 ;compare with
  180.     MOVE.B    D5,D2        ;length of name -> D2
  181.     MOVE.B    D2,D1        ;once more the length of
  182.                 ;the name
  183.     MOVEQ    #5,D3        ;bit to clear for capital
  184.                 ;letters
  185.     MOVEA.L    BV_NTBAS(A6),A2    ;base of name table
  186.     MOVEA.L    A3,A1        ;pointer to buffer with
  187.                 ;name -> A1
  188. L08630    CMPA.L    BV_NTP(A6),A2    ;top of name table
  189.     BGE.S    L08684        ;if end of name table
  190.     TST.L    0(A6,A2.L)    ;what is this
  191.     BEQ.S    L0864C        ;can not be the same name
  192.     MOVEA.L    BV_NLBAS(A6),A4    ;name list
  193.     ADDA.W    2(A6,A2.L),A4    ;add pointer to name in
  194.                 ;table
  195.     MOVE.B    0(A6,A4.L),D5    ;get length of name in
  196.                 ;table
  197.     CMP.B    D2,D5        ;compare it with the length
  198.                 ;of the name in buffer
  199.     BEQ.S    L08650        ;length is the same, so
  200.                 ;test the rest
  201. L0864C    ADDQ.W    #8,A2        ;try next name pointer
  202.     BRA.S    L08630
  203. L08650    ; compare name in buffer (A3/A1) with name in name
  204.     ; table (A2)
  205.     TST.B    D2        ;have we checked all bytes
  206.                 ;in the buffer ?
  207.     BEQ.S    L08672        ;end of name in buffer
  208.     MOVE.B    0(A6,A3.L),D4    ;next byte of name in
  209.                 ;buffer -> D4
  210.     ADDQ.W    #1,A3        ;increment pointer in
  211.                 ;buffer
  212.     BCLR    D3,D4        ;capital letters only
  213.     TST.B    D5        ;have we checked all bytes
  214.                 ;in the name list ?
  215.     BEQ.S    L0867C        ;end of name in list => not
  216.                 ;the same name
  217.     ADDQ.W    #1,A4        ;increment pointer in name
  218.                 ;list
  219.     MOVE.B    0(A6,A4.L),D6    ;next byte of name in list
  220.                 ;-> D6
  221.     BCLR    D3,D6        ;cabital letters only
  222.     CMP.B    D4,D6        ;are the bytes of buffer
  223.                 ;and name list equal
  224.     BNE.S    L0867C        ;not the same name
  225.     SUBQ.B    #1,D2        ;decrement number of bytes
  226.                 ;in buffer
  227.     SUBQ.B    #1,D5        ;decrement number of bytes
  228.                 ;in name list
  229.     BRA.S    L08650        ;continue comparision
  230. L08672:
  231.     TST.B    D5        ;is the the name in the
  232.                 ;name list complete ?
  233.     BNE.S    L0867C        ;no => the name are not
  234.                 ;identical
  235. FOUND_x:
  236.     MOVE.L    A2,D5        ;pointer to name table
  237.                 ;entry -> D5 !!!!
  238.     ADDQ.W    #4,A7        ;clean up stack
  239.     BRA.S    L086FA        ;return with success
  240. L0867C:
  241.     MOVEA.L    A1,A3        ;restore pointer to name in
  242.                 ;buffer
  243.     MOVE.B    D1,D2        ;restore length of name in
  244.                 ;buffer
  245.     ADDQ.W    #8,A2        ;try next name table entry
  246.     BRA.S    L08630        ;continue searching
  247. ; name not found in name list , so try list supplyed in (A7)
  248. L08684:
  249.     MOVEQ    #0,D6
  250.     MOVEA.L    A3,A0        ;pointer to name in buffer
  251.     MOVEA.L    (A7)+,A2     ;pointer to second list
  252.     JSR    L08966(PC)    ;*/undomodify BSR L08966
  253.                 ;try to find name there
  254.     BRA.S    L08692        ;name not found
  255.     BRA.S    L08704        ;name found
  256. L08692:
  257.     TST.B    BV_UNRVL(A6)    ;Need to unravel
  258.                 ;($ff) or not (0)
  259.     BEQ.S    L0869E
  260.     ADDQ.W    #8,A7
  261.     JMP    L0848E(PC)    ;*/undomodify BRA L0848E
  262. L0869E    ; write new name into name list, start entry into name
  263.     ; table
  264.     MOVEQ    #0,D4
  265.     MOVE.B    D2,D4
  266.     JSR    L04DE8(PC)    ;*/undomodify BSR L04DE8
  267.                 ;reserve memory for name
  268.                 ;table entry
  269.     MOVE.L    D4,D2
  270.     MOVE.L    #-1,4(A6,A2.L)    ;initialize address of
  271.                 ;routine
  272.     MOVEA.L    BV_NLP(A6),A4    ;name list running pointer
  273.     MOVE.L    A4,D3
  274.     SUB.L    BV_NLBAS(A6),D3    ;name list
  275.     MOVE.W    D3,2(A6,A2.L)    ;store pointer to name list
  276.     ADD.L    A3,D2
  277.     MOVE.B    -1(A6,D2.L),D3
  278.     MOVEQ    #0,D1
  279.     SUBI.B    #'%',D3        ;integer ?
  280.     BLT.S    L086D2        ;$ string
  281.     BGT.S    L086D0        ;nothing -> floatimg point
  282.     ADDQ.W    #1,D1        ;% integer
  283. L086D0    ADDQ.W    #1,D1
  284. L086D2    ADDQ.W    #1,D1
  285.     MOVE.W    D1,0(A6,A2.L)    ;store type
  286.     MOVE.L    A2,D5        ;Store name table pointer
  287.     MOVEQ    #1,D1
  288.     ADD.W    D4,D1
  289.     JSR    L04E72(PC)    ;*/undomodify BSR L04E72
  290.     MOVE.B    D4,0(A6,A4.L)    ;length of name
  291. L086E6    ADDQ.W    #1,A4        ;copy name to name list
  292.     MOVE.B    0(A6,A3.L),0(A6,A4.L)
  293.     ADDQ.W    #1,A3
  294.     SUBQ.B    #1,D4
  295.     BNE.S    L086E6        ;continue copy
  296.     ADDQ.W    #1,A4
  297.     MOVE.L    A4,BV_NLP(A6)    ;name list running pointer
  298. L086FA    MOVEA.L    D5,A2        ;store pointer to name
  299.                 ;table entry
  300.     SUB.L    BV_NTBAS(A6),D5    ;name table
  301.     LSR.L    #3,D5        ;calculate number of entry
  302.                 ;-> D5
  303.     ADDQ.L    #2,(A7)        ;return with success
  304. L08704    RTS
  305. ; ------------------------------------------------
  306. L08706    BSR.S    L0872C
  307.     BNE.S    L0872A
  308.     CMPI.B    #1,D2
  309.     BNE.S    L0872A
  310. L08710    ADDQ.W    #1,A0
  311.     BSR.S    L0872C
  312.     BEQ.S    L08710
  313.     CMPI.B    #$24,D2
  314.     BEQ.S    L08722
  315.     CMPI.B    #$25,D2
  316.     BNE.S    L08728
  317. L08722    TST.B    D3
  318.     BNE.S    L0872A
  319.     ADDQ.W    #1,A0
  320. L08728    ADDQ.L    #2,(A7)
  321. L0872A    RTS
  322. L0872C    MOVEQ    #0,D1
  323.     MOVE.B    0(A6,A0.L),D1
  324.     BLT.S    L08746
  325.     LEA    L03C28(PC),A1    ;table defines type of
  326.                 ;ASCII code
  327.     MOVE.B    0(A1,D1.W),D2
  328.     CMPI.B    #1,D2
  329.     BEQ.S    L08746
  330.     CMPI.B    #2,D2
  331. L08746    RTS
  332. L08748    MOVE.L    A0,-(A7)
  333.     MOVEQ    #0,D5
  334. L0874C    MOVEA.L    (A7),A0
  335.     BSR.S    L08794
  336. L08750    ADDQ.W    #1,D5
  337.     MOVEA.L    A2,A1
  338.     CMP.B    (A1),D5
  339.     BGT.S    L08790
  340.     MOVEQ    #0,D1
  341.     MOVE.B    0(A1,D5.W),D1
  342.     ADDA.W    D1,A1
  343.     MOVE.B    (A1)+,D1
  344.     CMP.B    (A1)+,D0
  345.     BNE.S    L08750
  346.     MOVE.B    D1,D0
  347.     SWAP    D1
  348.     MOVE.B    D0,D1
  349.     ANDI.B    #$0F,D1
  350. L08770    SUBQ.B    #1,D1
  351.     BLE.S    L0877E
  352.     ADDQ.W    #1,A0
  353.     BSR.S    L08794
  354.     CMP.B    (A1)+,D0
  355.     BEQ.S    L08770
  356.     BRA.S    L0874C
  357. L0877E:
  358.     SWAP    D1
  359.     LSR.B    #4,D1
  360.     ADDQ.W    #1,A0
  361.     BEQ.S    L0878C
  362.     JSR    L0872C(PC)    ;*/undomodify BSR.S L0872C
  363.                 ;*/undomodify nop
  364.     BEQ.S    L0874C
  365. L0878C:
  366.     ADDQ.L    #2,4(A7)
  367. L08790:
  368.     ADDQ.W    #4,A7
  369.     RTS
  370. L08794    MOVEQ    #0,D0
  371.     MOVE.B    0(A6,A0.L),D0
  372.     BLT.S    L087AC
  373.     LEA    L03C28(PC),A3    ;table defines type of
  374.                 ;ASCII code
  375.     CMPI.B    #1,0(A3,D0.W)
  376.     BNE.S    L087AC
  377.     BCLR    #5,D0
  378. L087AC    RTS
  379. L087AE:
  380.     DC.W    L084CE-L087C4
  381.     DC.W    L0860C-L087C4
  382.     DC.W    L0860C-L087C4
  383.     DC.W    L04FFC-L087C4    ;*/undomend DC.W L087AC-...
  384.     DC.W    L08552-L087C4
  385.     DC.W    L084B6-L087C4
  386.     DC.W    L08578-L087C4
  387.     DC.W    L085AC-L087C4
  388.     DC.W    L085E0-L087C4
  389.     DC.W    L08474-L087C4
  390.     DC.W    L084CA-L087C4
  391. L087C4    LSR.B    #1,D6
  392. L087C6    JSR    L0858C(PC)    ;*/undomodify BSR L0858C
  393.     ADD.B    D6,D6
  394.     MOVE.W    L087AE-2(PC,D6.W),D6
  395.     JMP    L087C4(PC,D6.W)
  396. ; Basic syntax analyser
  397. ANA_SYNX:
  398.     MOVEQ    #0,D7
  399.     MOVEQ    #0,D6
  400.     MOVE.L    (A2)+,-(A7)    ;push instruction table
  401.                 ;(END,FOR,DEFine,...)
  402.     MOVE.L    (A2),-(A7)    ;push command syntax table
  403.     MOVEA.L    (A7),A5        ;Command syntax table -> A5
  404.     MOVE.W    (A5),D6        ;get first word (offset)
  405.     ADDA.W    D6,A5        ;add offset to address
  406.     MOVEQ    #0,D4
  407.     JSR    PUSHD4TG(PC)    ;*/undomodify BSR PUSHD4TG
  408.                 ;push D4 (=0) on temporary
  409.                 ;stack
  410.     MOVEA.L    (A6),A0        ;get text line buffer base
  411.     BRA.S    L0880E
  412. L087EC    SUBI.B    #$80,D6
  413.     LSR.B    #1,D6
  414.     BNE.S    L087FE
  415.     SUBQ.W    #1,A5
  416.     JSR    L08A7A(PC)    ;*/undomodify BSR L08A7A
  417.     BRA    L088CE
  418. L087FE    MOVE.L    A5,D4
  419.     JSR    PUSHD4TG(PC)    ;*/undomodify BSR PUSHD4TG
  420.     ADD.B    D6,D6
  421.     MOVEA.L    (A7),A5
  422.     MOVE.W    -2(A5,D6.W),D6
  423.     ADDA.W    D6,A5
  424. L0880E    JSR    L08A7E(PC)    ;*/undomodify BSR L08A7E
  425.                 ;push #0 and A0(=text line)
  426.                 ;on backtrack stack
  427. L08812    MOVEQ    #0,D6
  428.     MOVE.B    (A5)+,D6     ;next byte commando syntax
  429.     BEQ.S    L0887A
  430.     BMI.S    L087EC
  431.     BCLR    #6,D6
  432.     BEQ.S    L0882C
  433.     MOVEA.L    4(A7),A2     ;get instruction syntax
  434.                 ;table (END,FOR,DEFine,...)
  435.     JSR    L08966(PC)    ;*/undomodify BSR L08966
  436.     BRA.S    L08846        ;error
  437.     BRA.S    L08864
  438. L0882C    BCLR    #5,D6
  439.     BEQ.S    L0883A
  440.     JSR    L08B34(PC)    ;*/undomodify BSR L08B34
  441.     BRA.S    L08846        ;error
  442.     BRA.S    L08864
  443. L0883A:
  444.     MOVEA.L    4(A7),A2     ;get instruction syntax
  445.                 ;table
  446.     JSR    L087C4(PC)    ;*/undomodify BSR.S L087C4
  447.                 ;*/undomodify nop
  448.     BRA.S    L08846        ;error
  449.     BRA.S    L08864
  450. L08846:
  451.     MOVEA.L    BV_BTP(A6),A2    ;backtrack stack
  452.                 ;during parsing
  453. L0884A    MOVEA.L    0(A6,A2.L),A3
  454.     MOVEA.L    4(A6,A2.L),A0
  455.     MOVE.L    8(A6,A2.L),D3
  456.     ADDA.W    #$0C,A2
  457.     BLT.S    L0884A
  458.     ADDQ.W    #1,A5
  459.     MOVE.L    A3,BV_TKP(A6)    ;token list running pointer
  460.     BRA.S    L08812        ;go on analysing with next
  461.                 ;item
  462. L08864    JSR    L08A7A(PC)    ;*/undomodify BSR L08A7A
  463. L08868    MOVEQ    #0,D6
  464.     MOVE.B    (A5),D6
  465.     BEQ.S    L088CE
  466.     BMI.S    L08874
  467.     ADDA.W    D6,A5
  468.     BRA.S    L08812
  469. L08874    NEG.B    D6
  470.     SUBA.W    D6,A5
  471.     BRA.S    L08812
  472. L0887A    MOVEA.L    BV_BTP(A6),A4    ;backtrack stack
  473.                 ;during parsing
  474.     CMPA.L    BV_BTBAS(A6),A4    ;backtrack running pointer
  475.     BGT.S    L088B2
  476.     MOVEA.L    0(A6,A4.L),A3
  477.     MOVEA.L    4(A6,A4.L),A0
  478.     MOVEA.L    8(A6,A4.L),A5
  479.     ADDA.W    #$0C,A4
  480.     MOVE.L    A4,BV_BTP(A6)    ;backtrack stack
  481.                 ;during parsing
  482.     MOVE.L    A5,D3
  483.     BGT.S    L088A6
  484.     BEQ.S    L088B8
  485.     MOVE.L    A0,D4
  486.     JSR    PUSHD4TG(PC)    ;*/undomodify BSR PUSHD4TG
  487.     BRA.S    L0887A
  488. L088A6    BTST    D7,-1(A5)
  489.     BEQ.S    L08846
  490.     MOVE.L    -$10(A6,A4.L),D3
  491.     BMI.S    L08846
  492. L088B2    ADDQ.W    #8,A7
  493.     MOVEQ    #-1,D0        ;Not complete error
  494.     RTS
  495. L088B8    MOVEA.L    BV_TGP(A6),A4    ;temporary graph stack
  496.                 ;during parsing
  497.     MOVEA.L    0(A6,A4.L),A5
  498.     ADDQ.W    #4,A4
  499.     MOVE.L    A4,BV_TGP(A6)    ;temporary graph stack
  500.                 ;during parsing
  501.     MOVE.L    A5,D3
  502.     BEQ.S    L088B2
  503.     BRA    L08846
  504. L088CE    JSR    L04E52(PC)    ;*/undomodify BSR L04E52
  505.                 ;reserve 12 byte on
  506.                 ;arith stack
  507.     MOVEA.L    BV_BTP(A6),A4    ;backtrack stack
  508.                 ;during parsing
  509.     MOVEA.L    BV_TGP(A6),A2    ;temporary graph stack
  510.                 ;during parsing
  511.     SUBQ.W    #8,A4
  512.     MOVE.L    #-1,4(A6,A4.L)
  513.     MOVE.L    0(A6,A2.L),0(A6,A4.L)
  514.     MOVEA.L    0(A6,A4.L),A5
  515.     SUBQ.W    #4,A4
  516.     MOVE.L    BV_TKP(A6),0(A6,A4.L) ;token list running ptr
  517.     ADDQ.W    #4,A2
  518.     MOVE.L    A2,BV_TGP(A6)    ;temporary graph stack
  519.                 ;during parsing
  520.     MOVE.L    A4,BV_BTP(A6)    ;backtrack stack
  521.                 ;during parsing
  522.     MOVE.L    A5,D3
  523.     BNE    L08868
  524.     ADDQ.W    #8,A7
  525.     MOVEQ    #0,D0
  526.     RTS
  527. INI_STCK ; Imitialize BASIC stacks
  528.     MOVE.L    BV_BTBAS(A6),BV_BTP(A6) ;backtrack running ptr
  529.     MOVE.L    BV_TGBAS(A6),BV_TGP(A6) ;graph stack running ptr
  530.     MOVE.L    BV_TKBAS(A6),BV_TKP(A6) ;token list
  531.     MOVEQ    #$7E,D1
  532.     JSR    L04E6E(PC)    ;*/undomodify BSR L04E6E
  533.     MOVEQ    #$20,D1
  534.     JSR    BV_CHRIX(PC)    ;*/undomodify BSR BV_CHRIX
  535.     MOVE.L    BV_RIP(A6),BV_TGBAS(A6) ;arith stack
  536.     SUBI.L    #$20,BV_TGBAS(A6) ;graph stack running ptr
  537.     MOVE.L    BV_TGBAS(A6),BV_TGP(A6) ;graph stack running ptr
  538.     MOVEQ    #$50,D1
  539.     JSR    L04E5A(PC)    ;*/undomodify BSR L04E5A
  540.     MOVE.L    BV_TGP(A6),BV_BTBAS(A6) ;temporary graph stack
  541.                 ;during parsing
  542.     SUBI.L    #$50,BV_BTBAS(A6) ;backtrack running pointer
  543.     MOVE.L    BV_BTBAS(A6),BV_BTP(A6) ;backtrack running ptr
  544.     MOVEQ    #0,D0
  545.     JSR    L04E32(PC)    ;*/undomodify BSR L04E32
  546.                 ;allocate memory
  547.     MOVE.W    #$0200,D1
  548.     JMP    L04E54(PC)    ;*/undomodify BRA L04E54
  549. L08966:
  550.     MOVEM.L    D0-D5/A1-A5,-(A7)
  551.     MOVEA.L    A2,A3
  552.     MOVEA.L    A0,A1
  553.     MOVEQ    #0,D3
  554.     MOVEQ    #0,D4
  555.     MOVEQ    #0,D5
  556.     MOVEQ    #0,D0
  557.     LSR.B    #1,D6
  558.     BEQ.S    L08980
  559.     JSR    L0858C(PC)    ;*/undomodify BSR L0858C
  560.     BRA.S    L08986
  561. L08980    ST    D0
  562.     SWAP    D0
  563.     MOVEQ    #1,D6
  564. L08986    MOVEQ    #0,D1
  565.     CMP.B    (A2),D6
  566.     BGT    L08A48
  567.     MOVE.B    0(A2,D6.W),D1
  568.     ADDA.L    D1,A2
  569.     MOVE.B    (A2)+,D1
  570.     ROR.L    #4,D1
  571.     MOVE.B    D1,D4
  572.     SWAP    D1
  573.     ROL.W    #4,D1
  574.     MOVE.B    D1,D3
  575. L089A0    SUBQ.B    #1,D4
  576.     BLT.S    L089FC
  577.     MOVE.B    (A2)+,D2
  578.     CMPI.B    #$60,D2
  579.     BGT.S    L089B2
  580.     ST    D0
  581.     SF    D5
  582.     BRA.S    L089BC
  583. L089B2    SF    D0
  584.     TST.B    D5
  585.     BNE.S    L089A0
  586.     SUBI.B    #$20,D2
  587. L089BC    MOVE.B    0(A6,A0.L),D1
  588.     ADDQ.W    #1,A0
  589.     CMPI.B    #$60,D1
  590.     BLE.S    L089CC
  591.     SUBI.B    #$20,D1
  592. L089CC    CMP.B    D2,D1
  593.     BEQ.S    L089A0
  594.     TST.B    D0
  595.     BNE.S    L089DA
  596.     ST    D5
  597.     SUBQ.W    #1,A0
  598.     BRA.S    L089A0
  599. L089DA    SWAP    D0
  600.     TST.B    D0
  601.     BEQ.S    L08A48
  602.     SWAP    D5
  603.     TST.B    D5
  604.     SWAP    D5
  605.     BEQ.S    L089EC
  606.     TST.B    D3
  607.     BNE.S    L089F4
  608. L089EC    ADDQ.W    #1,D6
  609.     MOVEA.L    A1,A0
  610.     MOVEA.L    A3,A2
  611.     BRA.S    L08986
  612. L089F4    MOVEA.L    A4,A0
  613.     SUBQ.B    #1,D3
  614.     ADDA.L    D4,A2
  615.     BRA.S    L08A30
  616. L089FC    SWAP    D0
  617.     TST.B    D0
  618.     BEQ.S    L08A38
  619.     MOVE.B    0(A6,A0.L),D1
  620.     BLT.S    L08A48
  621.     LEA    L03C28(PC),A5    ;table defines type of
  622.                 ;ASCII code
  623.     CMPI.B    #$01,0(A5,D1.W)
  624.     BEQ.S    L08A1E
  625.     CMPI.B    #$02,0(A5,D1.W)
  626.     BEQ.S    L08A48
  627.     BRA.S    L08A40
  628. L08A1E    SWAP    D5
  629.     TST.B    D5
  630.     BNE.S    L08A48
  631.     TST.B    D3
  632.     BEQ.S    L08A48
  633.     ST    D5
  634.     SWAP    D5
  635.     SUBQ.B    #1,D3
  636.     MOVEA.L    A0,A4
  637. L08A30    MOVE.B    (A2)+,D4
  638.     LSR.B    #4,D4
  639.     BRA    L089A0
  640. L08A38    MOVEQ    #-$7F,D4
  641.     MOVE.B    D6,D5
  642.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  643. L08A40    MOVEM.L    (A7)+,D0-D5/A1-A5
  644.     ADDQ.L    #2,(A7)
  645.     RTS
  646. L08A48    MOVEM.L    (A7)+,D0-D5/A1-A5
  647.     RTS
  648. COMP_ERR ; error when compiling
  649.     MOVE.L    BV_TKBAS(A6),BV_TKP(A6) ;token list
  650.     MOVEA.L    (A6),A0
  651.     JSR    L08474(PC)    ;*/undomodify BSR L08474
  652.     BRA.S    L08A76        ;error
  653.     MOVEQ    #-$7F,D4     ;error
  654.     MOVEQ    #$1F,D5
  655.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  656.     JSR    L085F2(PC)    ;*/undomodify BSR L085F2
  657.                 ;success
  658.     BRA.S    L08A76
  659.     MOVEQ    #-$7C,D4
  660.     MOVEQ    #$0A,D5
  661.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  662.     MOVEQ    #0,D0
  663.     RTS
  664. L08A76    MOVEQ    #-21,D0        ;Bad line error
  665.     RTS
  666. L08A7A    MOVE.L    A5,D4
  667.     BRA.S    L08A80
  668. L08A7E    MOVEQ    #0,D4
  669. L08A80    JSR    L04E52(PC)    ;*/undomodify BSR L04E52
  670.                 ;reserve 12 byte on
  671.                 ;arith stack
  672.     MOVEA.L    BV_BTP(A6),A4    ;backtrack stack
  673.                 ;during parsing
  674.     SUBA.W    #$0C,A4
  675.     MOVE.L    D4,8(A6,A4.L)    ;push D4 on Backtrack stack
  676.     MOVE.L    A0,4(A6,A4.L)    ;push A0 on Backtrack stack
  677.     MOVE.L    BV_TKP(A6),0(A6,A4.L) ;token list running ptr
  678.     MOVE.L    A4,BV_BTP(A6)    ;backtrack stack
  679.                 ;during parsing
  680.     RTS
  681. PUSHD4TG:
  682.     JSR    L04E58(PC)    ;*/undomodify BSR L04E58
  683.                 ;reserve 4 bytes on
  684.                 ;arith stack
  685.     MOVEA.L    BV_TGP(A6),A4    ;temporary graph stack
  686.                 ;during parsing
  687.     SUBQ.W    #4,A4
  688.     MOVE.L    D4,0(A6,A4.L)    ;put D4 on stack
  689.     MOVE.L    A4,BV_TGP(A6)    ;temporary graph stack
  690.                 ;during parsing
  691.     RTS
  692. ; --------------------------------------------------------------
  693. ; Format precompiled BASIC line. The line has to be tokenized
  694. ; and starts from 8(A6) and ends at $C(A6)
  695. ; --------------------------------------------------------------
  696. FMT_LINE:
  697.     MOVEA.L    8(A6),A0     ;token list
  698. L08AB8    CMPA.L    BV_TKP(A6),A0    ;token list running pointer
  699.     BGE.S    L08ADA        ;end of list ?
  700.     CMPI.B    #$81,0(A6,A0.L)    ;Search for non keyword
  701.                 ;token in token list
  702.     BNE.S    L08ACC
  703.     ADDQ.W    #2,A0
  704.     BSR.S    GO_SPACE
  705.     BRA.S    L08AB8
  706. L08ACC    CMPI.W    #$8409,0(A6,A0.L) ;symbol 9 = ?
  707.     ADDQ.W    #2,A0
  708.     BNE.S    L08AB8
  709.     BSR.S    L08B10        ;remove item from token
  710.                 ;list
  711.     BRA.S    L08AB8
  712. L08ADA    MOVEA.L    BV_TKBAS(A6),A0    ;token list
  713.     CMPI.B    #$80,0(A6,A0.L)    ;space token
  714.     BNE.S    L08AEA
  715.     ADDQ.W    #2,A0
  716.     BSR.S    L08B10        ;remove space from token
  717.                 ;list
  718. L08AEA    CMPI.W    #$8D00,0(A6,A0.L) ;line # ?
  719.     BNE.S    L08B0E        ;return
  720.     ADDQ.W    #4,A0
  721. GO_SPACE ; remove waste spaces
  722.     CMPI.B    #$80,0(A6,A0.L)    ;space token ?
  723.     BNE.S    L08B0E        ;no -> return
  724.     MOVE.B    1(A6,A0.L),D1
  725.     ADDQ.W    #2,A0        ;next token
  726.     SUBQ.B    #1,D1
  727.     BGT.S    L08B0A
  728.     BSR.S    L08B10        ;remove space from token
  729.                 ;list
  730.     BRA.S    L08B0E
  731. L08B0A    MOVE.B    D1,-1(A6,A0.L)    ;really neccessary
  732.                 ;??????????? <----
  733. L08B0E    RTS
  734. ; remove last item from token list
  735. L08B10    LEA    -2(A0),A2    ;old value of token list
  736.                 ;pointer before inc.
  737. L08B14    MOVE.W    0(A6,A0.L),-2(A6,A0.L)
  738.     ADDQ.W    #2,A0
  739.     CMPA.L    BV_TKP(A6),A0    ;token list running pointer
  740.     BLT.S    L08B14
  741.     SUBQ.L    #2,BV_TKP(A6)    ;token list running pointer
  742.     MOVEA.L    A2,A0
  743.     RTS
  744. ; NOW SEPERATORS =:#,(){} SPACE AND CR
  745. ; THIS WAS INTERPRETED AS CODE !!! CORRECTED
  746. L08B2A    DC.L    $3D3A232C
  747.     DC.L    $28297B7D
  748.     DC.W    $200A
  749. L08B34    LSR.B    #1,D6
  750. L08B36    MOVE.B    0(A6,A0.L),D1
  751.     CMP.B    L08B2A-1(PC,D6.W),D1
  752.     BEQ.S    L08B4C
  753.     CMPI.B    #$20,D1
  754.     BNE.S    L08B58
  755.     JSR    L0858C(PC)    ;*/undomodify BSR L0858C
  756.     BRA.S    L08B36
  757. L08B4C    ADDQ.W    #1,A0
  758.     MOVEQ    #-$7C,D4
  759.     MOVE.B    D6,D5
  760.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  761.     ADDQ.L    #2,(A7)
  762. L08B58    RTS
  763. ; --------------------------------------------------------------
  764. ;*/beginoverlay
  765. ;*/beginfilling
  766. ;*/removecode TB_LIST
  767. TB_LIST:
  768.     DC.L    L08D2B-ORG0
  769.     DC.L    COM_SYNX-ORG0
  770.  
  771. ;NOP08B62:
  772. ;     DCB.w     ($8B62-(NOP08B62-ORGN))/2,$4E71
  773. ;*/endfilling
  774. ;*/endoverlay
  775. ; --------------------------------------------------------------
  776. COM_SYNX ; Command syntax table
  777.     DC.L    $0022004E,$00AE0060
  778.     DC.L    $006600BC,$00C400E3,$00FA0163,$01780185
  779.     DC.L    $019901A2,$01B001BD,$01BE1401,$840F8A12
  780.     DC.L    $861E8809,$68F98C05,$90039201,$25F13500
  781.     DC.L    $00780625,$EA350000,$33E525E3,$35000035
  782.     DC.L    $0025018E,$DA004E02,$00500452,$02003202
  783.     DC.L    $00020200,$80940000,$44084812,$4C164608
  784.     DC.L    $00320200,$17160033,$02009800,$00320200
  785.     DC.L    $0200005C,$0A320200,$02190023,$0C008033
  786.     DC.L    $02009808,$00270900,$960D0080,$28F50098
  787.     DC.L    $0C00809A,$00007A09,$8028EE00,$8028E700
  788.     DC.L    $33020098,$F4004A02,$00320200,$6A041600
  789.     DC.L    $0033FC00,$660A6408,$6C0C6A11,$22150032
  790.     DC.L    $02000200,$00803202,$00980000,$32020002
  791.     DC.L    $EC006E00,$96020028,$FC800042,$0200480D
  792.     DC.L    $440B4600,$4A004C00,$4E020080,$32020002
  793.     DC.L    $00006216,$704D7219,$74217C2B,$7E29542A
  794.     DC.L    $6A337649,$9E4D0251
  795.     DC.W    $0080
  796. L08C74    DC.L    $32020098,$00003202,$009C0200,$28FC8000
  797.     DC.L    $32020002,$049C0200,$28FA8000,$12000056
  798.     DC.L    $04580200,$32020098,$00003202,$00980200
  799.     DC.L    $54020056,$04580200,$33020098,$020028FC
  800.     DC.L    $80003202,$009E0200,$22020098,$0000A000
  801.     DC.L    $002B0200,$02042B07,$0028FA2D,$00000202
  802.     DC.L    $0028FC2D,$F7009802,$00560380,$00320200
  803.     DC.B    $98,$00,$00
  804. ; --------------------------------------------------------------
  805. ;*/beginoverlay
  806. ;*/removecode EXP_SYNX
  807. ;*/beginfilling
  808. EXP_SYNX ; Expression syntax table
  809.     DC.B    $0C,$01,$2A,$08,$10
  810.     DC.L    $0C040C02,$08009802
  811.     DC.L    $002C0400,$2A05800A,$EB00A202,$002CF600
  812.     DC.L    $0202002A,$02009802,$0028FC2C,$00000202
  813.     DC.L    $00802A02,$00A20200,$2CF80080,$0EFE2601
  814.     DC.L    $9802000E
  815.     DC.B    $F7,$80,$00
  816.  
  817. ;     DC.B     $00
  818. ;NOP08D2A:
  819. ;     DCB.w     ($8D2A-(NOP08D2A-ORGN))/2,$4E71
  820. ;     DC.B     $00
  821. ;*/endfilling
  822. ;*/endoverlay
  823. ; --------------------------------------------------------------
  824. L08D2B    ; Base of instruction list
  825.     DC.B    $1F
  826.     DC.L    $2024282B
  827.     DC.W    $3239
  828.     DC.L    $3E454F58
  829.     DC.L    $5B5E6267
  830.     DC.L    $6D71777F
  831.     DC.L    $84898E91
  832.     DC.L    $98A2A7AB
  833.     DC.L    $B1B5BABF
  834.     DC.W    $C636
  835.     DC.B    'END',$30,'FOR'
  836.     DC.B    $20,'IF',$60,'REPeat'
  837.     DC.B    $60,'SELect',$40,'WHEN'
  838.     DC.B    $62,'DEFine',$90,'PROCedure'
  839.     DC.B    $80,'FuNction',$22,'GO TO'
  840.     DC.B    $30,'SUB',$41,'WHEN',$50,'ERRor'
  841.     DC.B    $30,'END',$50,'ERRor',$70,'RESTORE'
  842. L08DAA    DC.B    $40,'NEXT',$40,'EXIT',$40,'ELSE'
  843.     DC.B    $20,'ON',$60,'RETurn'
  844.     DC.B    $90,'REMAINDER',$40,'DATA'
  845.     DC.B    $30,'DIM',$50,'LOCal'
  846.     DC.B    $30,'LET',$40,'THEN',$40,'STEP'
  847.     DC.B    $60,'REMark',$70,'MISTake',$00
  848. L08DFA    MOVEQ    #2,D1
  849.     BSR.S    L08E68
  850.     MOVE.B    D4,0(A6,A3.L)
  851.     MOVE.B    D5,1(A6,A3.L)
  852.     ADDQ.W    #2,A3
  853.     BRA.S    L08E5E
  854. L08E0A    MOVEQ    #$04,D1
  855.     MOVEQ    #0,D2
  856.     BSR.S    L08E76
  857. L08E10    BRA.S    L08E5E
  858. L08E12    MOVEQ    #$06,D1
  859. L08E14    MOVE.L    A1,BV_RIP(A6)    ;arith stack
  860.     BSR.S    L08E68
  861.     MOVEA.L    $0058(A6),A1    ;arith stack
  862.     ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  863.     MOVE.W    0(A6,A1.L),D2
  864.     ADDI.W    #$F000,D2
  865.     MOVE.W    D2,0(A6,A3.L)
  866.     MOVE.L    2(A6,A1.L),2(A6,A3.L)
  867.     ADDQ.W    #6,A3
  868.     BRA.S    L08E5E
  869. L08E38    MOVEQ    #1,D1
  870.     ADD.W    D5,D1
  871.     BVS.S    L08E64
  872. L08E3E    ADDQ.W    #4,D1
  873.     BSR.S    L08E76
  874.     BEQ.S    L08E5E
  875.     MOVE.W    D5,D1
  876. L08E46    MOVE.B    0(A6,A2.L),0(A6,A3.L)
  877.     ADDQ.W    #1,A3
  878.     ADDQ.W    #1,A2
  879.     SUBQ.W    #1,D1
  880.     BNE.S    L08E46
  881.     BTST    D7,D5
  882.     BEQ.S    L08E5E
  883.     MOVE.B    D7,0(A6,A3.L)
  884.     ADDQ.W    #1,A3
  885. L08E5E    MOVE.L    A3,BV_TKP(A6)    ;token list running pointer
  886. L08E62    RTS
  887. L08E64    ADDQ.W    #4,A7
  888.     RTS
  889. L08E68    MOVE.B    D2,-(A7)
  890.     JSR    L04E6E(PC)    ;*/undomodify BSR L04E6E
  891.     MOVE.B    (A7)+,D2
  892.     MOVEA.L    BV_TKP(A6),A3    ;token list running pointer
  893.     RTS
  894. L08E76    BSR.S    L08E68
  895.     MOVE.B    D4,0(A6,A3.L)
  896.     MOVE.B    D2,1(A6,A3.L)
  897.     MOVE.W    D5,2(A6,A3.L)
  898.     ADDQ.W    #4,A3
  899.     RTS
  900. STO_LINE ; Store compiled line
  901.     MOVEA.L    BV_TKBAS(A6),A1    ;token list
  902.     CMPI.B    #$8D,0(A6,A1.L)
  903.     BNE    L08F82
  904.     MOVE.W    2(A6,A1.L),D2
  905.     MOVE.L    BV_TKP(A6),D1    ;token list running pointer
  906.     SUB.L    A1,D1
  907.     SUBQ.W    #6,D1
  908.     SEQ    D0
  909.     ADDQ.W    #6,D1
  910.     MOVEQ    #0,D6
  911.     MOVEQ    #0,D5
  912.     MOVEA.L    BV_PFBAS(A6),A0    ;program file
  913.     MOVEQ    #0,D3
  914.     BRA.S    L08EB6
  915. L08EB2    MOVE.W    $02(A6,A0.L),D3
  916. L08EB6    ADD.W    D5,D6
  917.     ADDA.L    D6,A0
  918.     MOVE.W    0(A6,A0.L),D5
  919.     ADDQ.W    #2,A0
  920.     CMPA.L    BV_PFP(A6),A0    ;program running pointer
  921.     BLT.S    INS_LINE
  922.     ADDQ.B    #1,D0
  923.     BGT.S    L08F44
  924.     SUBQ.W    #2,A0
  925.     BRA.S    L08EFE
  926. INS_LINE ; insert new line in prog
  927.     CMP.W    2(A6,A0.L),D2
  928.     BGT.S    L08EB2
  929.     BEQ.S    L08F00
  930.     SUBQ.W    #2,A0
  931.     TST.B    D0
  932.     BNE.S    L08EFE
  933.     ADDQ.W    #2,D1
  934.     BSR    L08F84
  935.     BSR.S    L08F3A
  936.     SUBQ.W    #2,D1
  937.     MOVE.W    D1,D5
  938.     SUB.W    D6,D5
  939.     MOVE.W    D5,0(A6,A0.L)
  940.     MOVEQ    #$01,D0
  941. L08EF0    BSR    L08F92
  942.     ADD.W    0(A6,A0.L),D6
  943.     SUB.W    D1,D6
  944.     MOVE.W    D6,0(A6,A0.L)
  945. L08EFE    BRA.S    L08F5C
  946. L08F00    ; replace existing line in prog
  947.     TST.B    D0
  948.     BEQ.S    L08F06
  949.     MOVEQ    #-$02,D1
  950. L08F06    ADD.W    D6,D5
  951.     LEA    -$0002(A0),A3
  952.     ADDA.L    D5,A0
  953.     CMPA.L    BV_PFP(A6),A0    ;program running pointer
  954.     BGE.S    L08F3C
  955.     SUB.W    D5,D1
  956.     BLT.S    L08F1A
  957.     BSR.S    L08F84
  958. L08F1A    BSR.S    L08F3A
  959.     MOVEA.L    A3,A0
  960.     ADD.W    D5,D1
  961.     BGT.S    L08F2E
  962.     ADD.W    0(A6,A0.L),D5
  963.     SUB.W    D6,D5
  964.     MOVE.W    D5,0(A6,A0.L)
  965.     BRA.S    L08F5C
  966. L08F2E    MOVE.W    D1,D4
  967.     SUB.W    D6,D4
  968.     MOVE.W    D4,0(A6,A0.L)
  969.     MOVE.W    D5,D6
  970.     BRA.S    L08EF0
  971. L08F3A    BRA.S    L08FA6
  972. L08F3C    LEA    2(A3),A0
  973.     MOVE.L    A3,BV_PFP(A6)    ;program running pointer
  974. L08F44    SUBQ.W    #2,A0
  975.     TST.B    D0
  976.     BLT.S    L08F5C
  977.     ADDQ.W    #2,D1
  978.     BSR.S    L08F84
  979.     SUBQ.W    #2,D1
  980.     SUB.W    D6,D1
  981.     MOVE.W    D1,0(A6,A0.L)
  982.     BSR.S    L08F92
  983.     MOVE.L    A0,BV_PFP(A6)    ;program running pointer
  984. L08F5C    TST.B    $00B9(A6)
  985.     BEQ.S    L08F80
  986.     SF    BV_AUTO(A6)    ;Whether AUTO/EDIT
  987.                 ;is on ($FF) or off (0)
  988.     BGT.S    L08F70
  989.     MOVE.W    D3,BV_EDLIN(A6)    ;Line # to edit next
  990.     BNE.S    L08F7C
  991.     BRA.S    L08F80
  992. L08F70    CMPA.L    BV_PFP(A6),A0    ;program running pointer
  993.     BGE.S    L08F7C
  994.     MOVE.W    $04(A6,A0.L),BV_EDLIN(A6) ;Line # to
  995.                      ;edit next
  996. L08F7C    ST    BV_AUTO(A6)    ;Whether AUTO/EDIT
  997.                 ;is on ($FF) or off (0)
  998. L08F80    ADDQ.L    #2,(A7)
  999. L08F82    RTS
  1000. L08F84    MOVEM.L    D0-D3/A0-A3,-(A7)
  1001.     JSR    L04E82(PC)    ;*/undomodify BSR L04E82
  1002.     MOVEM.L    (A7)+,D0-D3/A0-A3
  1003.     RTS
  1004. L08F92    ADDQ.W    #2,A0
  1005.     MOVE.W    0(A6,A1.L),0(A6,A0.L)
  1006.     ADDQ.W    #2,A1
  1007.     CMPA.L    BV_TKP(A6),A1    ;token list running pointer
  1008.     BLT.S    L08F92
  1009.     ADDQ.W    #2,A0
  1010.     RTS
  1011. L08FA6    MOVEM.L    D0-D3/A0-A3,-(A7)
  1012.     EXT.L    D1
  1013.     TST.L    D1
  1014.     BEQ.S    L08FE0
  1015.     MOVEA.L    BV_PFP(A6),A1    ;program running pointer
  1016.     BLT.S    L08FCA
  1017.     LEA    0(A1,D1.W),A2
  1018. L08FBA    SUBQ.W    #2,A1
  1019.     SUBQ.W    #2,A2
  1020.     MOVE.W    0(A6,A1.L),0(A6,A2.L)
  1021.     CMPA.L    A0,A1
  1022.     BGT.S    L08FBA
  1023.     BRA.S    L08FDC
  1024. L08FCA    LEA    0(A0,D1.W),A2
  1025. L08FCE    MOVE.W    0(A6,A0.L),0(A6,A2.L)
  1026.     ADDQ.W    #2,A0
  1027.     ADDQ.W    #2,A2
  1028.     CMPA.L    A1,A0
  1029.     BLT.S    L08FCE
  1030. L08FDC    ADD.L    D1,BV_PFP(A6)    ;program running pointer
  1031. L08FE0    MOVEM.L    (A7)+,D0-D3/A0-A3
  1032.     RTS
  1033. L08FE6    ST    BV_PRINT(A6)    ;Print from prtok ($ff)
  1034.                 ;or leave in buffer
  1035.     MOVEA.L    BV_LNBAS(A6),A1    ;line # table
  1036.     MOVE.L    BV_LNP(A6),D0    ;line # running ptr
  1037.     SUB.L    A1,D0
  1038.     BNE.S    L09000
  1039.     MOVE.W    D2,D4
  1040.     BEQ.S    L09060
  1041.     MOVE.W    D2,D6
  1042.     BRA.S    L09044
  1043. L08FFE    MOVE.W    D4,D2
  1044. L09000    MOVE.W    0(A6,A1.L),D4
  1045.     TST.W    D2
  1046.     BEQ.S    L08FFE
  1047.     MOVE.W    BV_LSBAS(A6),D6    ;Bottom line in window
  1048.     CMP.W    BV_LSBEF(A6),D2    ;Invisible top line
  1049.     BLT.S    L09060
  1050.     CMP.W    D4,D2
  1051.     BLT.S    L09032
  1052.     CMP.W    BV_LSAFT(A6),D2    ;Invisible bottom line
  1053.     BGT.S    L09060
  1054.     CMP.W    D6,D2
  1055.     BGT.S    L0902A
  1056.     TST.B    D5
  1057.     BGE.S    L09044
  1058.     MOVE.W    BV_LSAFT(A6),D6    ;Invisible bottom line
  1059.     BRA.S    L09044
  1060. L0902A    TST.B    D5
  1061.     BLT.S    L09060
  1062.     MOVE.W    D2,D6
  1063.     BRA.S    L09044
  1064. L09032    TST.B    D5
  1065.     BLT.S    L09060
  1066.     MOVE.W    D2,D4
  1067.     MOVE.W    BV_MAXLN(A6),D0    ;Max. number of window lines
  1068.     SUB.W    BV_TOTLN(A6),D0    ;Number of window line so far
  1069.     BGT.S    L09044
  1070.     SUBQ.W    #1,D6
  1071. L09044    MOVE.W    D2,BV_LSFIL(A6)    ;fill window when
  1072.                 ;relisting up to here
  1073.     MOVEQ    #$10,D0        ;SD.POS position cursor at
  1074.                 ;row, column (char)
  1075.     MOVEQ    #0,D2
  1076.     MOVEQ    #0,D1
  1077.     BSR.S    L0905C
  1078.     MOVEQ    #0,D7
  1079.     JSR    TKN_LIST(PC)    ;*/undomodify BSR TKN_LIST
  1080.     MOVEQ    #$24,D0        ;clears right hand end of
  1081.                 ;cursor line
  1082.     BSR.S    L0905C
  1083.     MOVEQ    #$22,D0        ;Clears bottom of window
  1084. L0905C    MOVEQ    #-1,D3
  1085.     TRAP    #3
  1086. L09060    RTS
  1087. L09062:
  1088.     DC.L    $02020404,$02020204,$040204FB,$FB040200
  1089. L09072:
  1090.     MOVEQ    #0,D0
  1091.     MOVEQ    #6,D1
  1092.     MOVE.B    0(A6,A4.L),D0
  1093.     BEQ.S    L09098
  1094.     SUBI.B    #$80,D0
  1095.     CMPI.B    #$70,D0
  1096.     BGE.S    L09096
  1097.     MOVE.B    L09062(PC,D0.W),D1
  1098.     BGE.S    L09096
  1099.     NEG.B    D1
  1100.     ADD.W    2(A6,A4.L),D1
  1101.     BCLR    #0,D1
  1102. L09096    ADDA.L    D1,A4
  1103. L09098    MOVE.B    0(A6,A4.L),D0
  1104.     MOVE.W    0(A6,A4.L),D1
  1105.     RTS
  1106. L090A2    MOVE.L    A1,-(A7)
  1107.     MOVEA.L    BV_CHBAS(A6),A1    ;channel name
  1108.     ADDA.W    #$50,A1
  1109.     MOVE.L    0(A6,A1.L),D0
  1110.     SUB.L    A0,D0
  1111.     MOVEA.L    (A7)+,A1
  1112.     RTS
  1113. L090B6:
  1114.     MOVE.L    A5,-(A7)
  1115.     MOVEA.L    A0,A5
  1116.     BSR.S    L090A2
  1117.     SEQ    $9B(A6)        ;whether checking list
  1118.                 ;($FF) or not (0)
  1119.     BNE.S    L09108
  1120.     MOVEQ    #$0B,D0        ;get window size and cursor
  1121.                 ;position
  1122.     LEA    $A2(A6),A1    ;length of window line
  1123.     MOVEQ    #-1,D3
  1124.     TRAP    #3
  1125.     MOVE.L    BV_LNBAS(A6),BV_LNP(A6)   ;line # table ->
  1126.                 ;running pointer
  1127.     CLR.W    BV_TOTLN(A6)    ;number of window lines so far
  1128.     MOVEQ    #$64,D1
  1129.                 ;*/undoinsert MOVEQ #$44,D2
  1130.     JSR    L04E7E(PC)    ;*/undomodify BSR L04E7E
  1131.                 ;*/undomodify BSR L04E84
  1132.     MOVE.W    BV_LINUM(A6),BV_LSBEF(A6) ;Current line # ->
  1133.                 ;invisible top line
  1134.     MOVE.W    #$7FFF,BV_LSAFT(A6) ;Invisible bottom line
  1135.     BRA.S    L09108
  1136. L090EA:
  1137.     DC.W    L092F8-L090EA
  1138.     DC.W    L09314-L090EA
  1139.     DC.W    L09292-L090EA
  1140.     DC.W    L09292-L090EA
  1141.     DC.W    L09338-L090EA
  1142.     DC.W    L0930E-L090EA
  1143.     DC.W    L0931A-L090EA
  1144.     DC.W    L09292-L090EA
  1145.     DC.W    L0929C-L090EA
  1146.     DC.W    L09292-L090EA
  1147.     DC.W    L09292-L090EA
  1148.     DC.W    L092E2-L090EA
  1149.     DC.W    L092EC-L090EA
  1150.     DC.W    L09238-L090EA
  1151.     DC.W    L09308-L090EA
  1152. L09108    MOVE.L    (A2),-(A7)
  1153.     ADDQ.W    #2,A4
  1154.     MOVEQ    #0,D4
  1155.     MOVE.B    #$8D,D4
  1156. L09112    MOVE.L    (A6),4(A6)    ;Buffer base -> buffer
  1157.                 ;running pointer
  1158. L09116    CMPA.L    BV_PFP(A6),A4    ;program running pointer
  1159.     BLT.S    L09130
  1160.     TST.B    BV_PRINT(A6)    ;Print from prtok ($ff)
  1161.                 ;or leave in buffer
  1162.     BNE    L09202
  1163.     TST.B    BV_AUTO(A6)    ;Whether AUTO/EDIT
  1164.                 ;is on ($FF) or off (0)
  1165.     BEQ    L09202
  1166.     BSR    L09250
  1167. L09130    MOVEQ    #$10,D1
  1168.     BSR    L092C0
  1169.     MOVEA.L    (A7),A1
  1170.     SUBI.B    #$80,D4
  1171.     CMPI.B    #$70,D4
  1172.     BGE    L091F2
  1173.     ADD.B    D4,D4
  1174.     MOVE.W    L090EA(PC,D4.W),D4
  1175.     JSR    L090EA(PC,D4.W)
  1176.     CMPI.B    #$8D,D4
  1177.     BNE    L091F4
  1178.     TST.B    BV_PRINT(A6)    ;Print from prtok ($ff)
  1179.                 ;or leave in buffer
  1180.     BEQ    L091FE
  1181.     TST.B    BV_LSANY(A6)    ;Whether checking
  1182.                 ;list ($ff) or not (0)
  1183.     BEQ.S    L091B8
  1184.     MOVEA.L    (A6),A1
  1185.     MOVE.L    BV_BFP(A6),D2    ;buffer running pointer
  1186.     SUB.L    A1,D2
  1187.     MOVEA.L    BV_LNP(A6),A2    ;line # running ptr
  1188.     MOVE.W    BV_LSBAS(A6),0(A6,A2.L) ;Bottom line in window
  1189.     SUBQ.W    #2,D2
  1190.     DIVU    BV_LENLN(A6),D2    ;Length of window line
  1191.     ADDQ.W    #1,D2
  1192.     MOVE.W    D2,2(A6,A2.L)
  1193.     ADD.W    BV_TOTLN(A6),D2    ;Number of window line so far
  1194. L09186    CMP.W    BV_MAXLN(A6),D2    ;Max. number of window lines
  1195.     BLE.S    L091AC
  1196.     MOVE.W    BV_LSFIL(A6),D0
  1197.     BEQ.S    L09198
  1198.     CMP.W    BV_LSBAS(A6),D0    ;Bottom line in window
  1199.     BLT.S    L091E4
  1200. L09198    MOVEA.L    BV_LNBAS(A6),A2    ;line # table
  1201.     SUB.W    2(A6,A2.L),D2
  1202.     MOVE.W    0(A6,A2.L),BV_LSBEF(A6) ;Invisible top line
  1203.     ADDQ.L    #4,BV_LNBAS(A6)    ;line # table
  1204.     BRA.S    L09186
  1205. L091AC    MOVE.W    D2,BV_TOTLN(A6)    ;Number of window line so far
  1206.     ADDQ.L    #4,BV_LNP(A6)    ;line # running ptr
  1207.     JSR    L04F9E(PC)    ;*/undomodify BSR L04F9E
  1208. L091B8:
  1209.     MOVEQ    #IO.SSTRG,D0    ;send a string of bytes
  1210.     MOVEA.L    (A6),A1        ;string to be send
  1211.     MOVE.L    4(A6),D2     ;number of bytes
  1212.     SUB.L    A1,D2
  1213.     MOVEA.L    A5,A0
  1214.     MOVEQ    #-1,D3
  1215.     TRAP    #4
  1216.     TRAP    #3
  1217.     TST.L    D0
  1218.     BNE.S    L09204
  1219. ; --------------------------------------------------------------
  1220. */beginoverlay
  1221.     ifd    NoTas
  1222.                 ;*/remove MOVE.L D1,D2
  1223.                 ;*/note could be dangerous?
  1224.     MOVEQ    #$24,D0        ;SD.CLRRT clears right hand
  1225.                 ;end of cursor line
  1226.     TRAP    #3
  1227.     BSET    #7,BV_BRK(A6)    ;*/mend TAS BV_BRK(A6)
  1228.                 ;There has been a
  1229.                 ;break (0) or not ($80)
  1230.     endc
  1231. ;
  1232.     ifnd    NoTas
  1233. ;
  1234.     MOVE.L    D1,D2
  1235.     MOVEQ    #$24,D0
  1236.     TRAP    #3
  1237.     TAS    BV_BRK(A6)
  1238. ;
  1239.     endc
  1240. */endoverlay
  1241. ; --------------------------------------------------------------
  1242.     BNE    L09112
  1243.     MOVE.W    BV_LSBAS(A6),BV_LSAFT(A6) ;windows last line
  1244.     BRA.S    L09202
  1245. L091E4:
  1246.     MOVE.W    BV_LSBAS(A6),BV_LSAFT(A6) ;windows last line
  1247.     MOVE.W    -$04(A6,A2.L),BV_LSBAS(A6)
  1248.     BRA.S    L09202
  1249. L091F2    BSR.S    L09216
  1250. L091F4    JSR    L09072(PC)    ;*/undomodify BSR L09072
  1251.     MOVE.W    D0,D4
  1252.     BRA    L09116
  1253. L091FE    SUBQ.L    #1,4(A6)
  1254. L09202    MOVEQ    #0,D0
  1255. L09204    ADDQ.W    #4,A7
  1256.     MOVEA.L    A5,A0
  1257.     MOVEA.L    (A7)+,A5
  1258.     RTS
  1259. L0920C    JSR    L04E4C(PC)    ;*/undomodify BSR L04E4C
  1260.     MOVEA.L    $0058(A6),A1    ;arith stack
  1261.     RTS
  1262. L09216    BSR.S    L0920C
  1263.     MOVE.W    0(A6,A4.L),D2
  1264.     SUBI.W    #$F000,D2
  1265.     SUBQ.W    #6,A1
  1266.     MOVE.W    D2,0(A6,A1.L)
  1267.     MOVE.L    2(A6,A4.L),2(A6,A1.L)
  1268.     MOVEA.L    4(A6),A0
  1269.     JSR    CN_FTOD(PC)    ;*/undomodify BSR CN_FTOD
  1270.     BRA    L09364
  1271. L09238:
  1272.     BSR.S    L0920C
  1273.     MOVE.W    $02(A6,A4.L),D1
  1274.     TST.B    BV_PRINT(A6)    ;Print from prtok ($ff)
  1275.                 ;or leave in buffer
  1276.     BNE.S    L0925C
  1277.     TST.B    BV_AUTO(A6)    ;Whether AUTO/EDIT
  1278.                 ;is on ($FF) or off (0)
  1279.     BEQ.S    L0925C
  1280.     CMP.W    BV_EDLIN(A6),D1    ;line # to edit next
  1281.     BEQ.S    L0925C
  1282. L09250    BSR.S    L0920C
  1283.     MOVE.W    BV_EDLIN(A6),D1    ;line # to edit next
  1284.     BSR.S    L09276
  1285. L09258    ADDQ.W    #4,A7
  1286.     BRA.S    L09202
  1287. L0925C    TST.B    BV_LSANY(A6)    ;Whether checking
  1288.                 ;list ($ff) or not (0)
  1289.     BEQ.S    L09288
  1290.     CMP.W    D6,D1
  1291.     BLE.S    L09272
  1292.     TST.W    BV_LSFIL(A6)
  1293.     BNE.S    L09272
  1294.     MOVE.W    D1,BV_LSAFT(A6)    ;Invisible bottom line
  1295.     BRA.S    L09258
  1296. L09272    MOVE.W    D1,BV_LSBAS(A6)    ;Bottom line in window
  1297. L09276    SUBQ.W    #2,A1
  1298.     MOVE.W    D1,0(A6,A1.L)
  1299.     MOVEA.L    BV_BFP(A6),A0    ;buffer running pointer
  1300.     JSR    CN_ITOD(PC)    ;*/undomodify BSR CN_ITOD
  1301.     BRA    L09316
  1302. L09288    CMP.W    D6,D1
  1303.     BGT.S    L09258
  1304.     BRA.S    L09276
  1305. L0928E    DC.W    $3F3F,$3F3F
  1306. L09292:
  1307.     MOVEQ    #4,D1
  1308.     LEA    L0928E(PC),A1
  1309.     BRA    L0935A
  1310. L0929C:
  1311.     MOVE.W    2(A6,A4.L),D2
  1312.     LSL.L    #3,D2
  1313.     MOVEA.L    BV_NTBAS(A6),A1    ;name table
  1314.     ADDA.W    D2,A1
  1315.     MOVE.W    2(A6,A1.L),D2
  1316.     BLT.S    L09292
  1317.     MOVEA.L    BV_NLBAS(A6),A1    ;name list
  1318.     ADDA.W    D2,A1
  1319.     MOVEQ    #0,D1
  1320.     MOVE.B    0(A6,A1.L),D1
  1321.     ADDQ.W    #1,A1
  1322.     BRA    L09354
  1323. L092C0    SUBA.L    BV_PFBAS(A6),A4    ;program file
  1324.     SUBA.L    BV_PFBAS(A6),A1    ;program file
  1325.     MOVEM.L    D1/A1/A4,-(A7)
  1326.     JSR    L04E6A(PC)    ;*/undomodify BSR L04E6A
  1327.     MOVEA.L    4(A6),A0
  1328.     MOVEM.L    (A7)+,D1/A1/A4
  1329.     ADDA.L    BV_PFBAS(A6),A1    ;program file
  1330.     ADDA.L    BV_PFBAS(A6),A4    ;program file
  1331.     RTS
  1332. L092E2:
  1333.     BSR.S    L092E6
  1334.     BSR.S    L092EC
  1335. L092E6    MOVE.B    $01(A6,A4.L),D2
  1336.     BRA.S    L0934C
  1337. L092EC:
  1338.     MOVE.W    $02(A6,A4.L),D1
  1339.     BEQ.S    L09306
  1340.     LEA    4(A4),A1
  1341.     BRA.S    L09354
  1342. L092F8:
  1343.     MOVE.B    $1(A6,A4.L),D1
  1344.     BSR.S    L092C0
  1345. L092FE    MOVEQ    #$20,D2
  1346.     BSR.S    L0934C
  1347.     SUBQ.B    #1,D1
  1348.     BGT.S    L092FE
  1349. L09306    RTS
  1350. L09308:
  1351.     LEA    L0936C(PC),A1
  1352.     BRA.S    L0931E
  1353. L0930E:
  1354.     LEA    L0938E(PC),A1
  1355.     BRA.S    L0931E
  1356. L09314:
  1357.     BSR.S    L0931E
  1358. L09316    MOVEQ    #$20,D2
  1359.     BRA.S    L0934C
  1360. L0931A:
  1361.     LEA    L0937E(PC),A1
  1362. L0931E    MOVE.B    1(A6,A4.L),D1
  1363.     MOVE.B    0(A1,D1.W),D1
  1364.     ADDA.L    D1,A1
  1365.     MOVE.B    (A1)+,D1
  1366.     LSR.L    #4,D1
  1367.     BRA.S    L0935A
  1368. L0932E    ; separators =:#,(){} space CR
  1369.     DC.W    $3D3A,$232C,$2829,$7B7D,$200A
  1370. L09338:
  1371.     MOVE.B    $1(A6,A4.L),D1
  1372.     MOVE.B    L0932E-1(PC,D1.W),D2
  1373.     MOVEQ    #0,D4
  1374.     SUB.B    D2,D1
  1375.     BNE.S    L0934C
  1376.     ADDQ.W    #4,A4
  1377.     MOVE.B    #$8D,D4
  1378. L0934C    MOVE.B    D2,0(A6,A0.L)
  1379.     ADDQ.W    #1,A0
  1380.     BRA.S    L09364
  1381. L09354    BSR    L092C0
  1382.     ADDA.L    A6,A1
  1383. L0935A    MOVE.B    (A1)+,0(A6,A0.L)
  1384.     ADDQ.W    #1,A0
  1385.     SUBQ.W    #1,D1
  1386.     BGT.S    L0935A
  1387. L09364    MOVE.L    A0,4(A6)
  1388.     MOVEQ    #0,D0
  1389.     RTS
  1390. ; ASCII-CODE FOR SEPARATORS
  1391. ; THERE ARE 5 -EACH BYTE SHOWS DISPLACEMENT
  1392. L0936C:
  1393.     DC.B    $05,$06,$08,$0A,$0C,$0E
  1394. ; HERE THEY ARE - 10 MEANS LENGTH 1
  1395.     DC.B    $10,','
  1396.     DC.B    $10,';',$10,'\'
  1397.     DC.B    $10,'!',$20,'TO',$00
  1398. ; NEXT LIST OF 4 OPERATORS
  1399. L0937E:
  1400.     DC.B    $04,$05,$07,$09,$0C
  1401.     DC.B    $10,'-',$10,'+'
  1402.     DC.B    $20,'~~',$30,'NOT'
  1403. * NEXT LIST OF $16 OPERATORS
  1404. L0938E:
  1405.     DC.W    $1617,$191B,$1D1F,$2224,$2729,$2C2F,$3134,$373A
  1406.     DC.W    $3C3E,$4145,$494D
  1407.     DC.B    $51
  1408.     DC.B    $10,'+'
  1409.     DC.B    $10,'-'
  1410.     DC.B    $10,'*'
  1411.     DC.B    $10,'/'
  1412.     DC.B    $20,'>='
  1413.     DC.B    $10,'>'
  1414.     DC.B    $20,'=='
  1415.     DC.B    $10,'='
  1416.     DC.B    $20,'<>'
  1417.     DC.B    $20,'<='
  1418.     DC.B    $10,'<'
  1419.     DC.B    $20,'||'
  1420.     DC.B    $20,'&&'
  1421.     DC.B    $20,'^^'
  1422.     DC.B    $10,'^'
  1423.     DC.B    $10,'&'
  1424.     DC.B    $20,'OR'
  1425.     DC.B    $30,'AND'
  1426.     DC.B    $30,'XOR'
  1427.     DC.B    $30,'MOD'
  1428.     DC.B    $30,'DIV'
  1429.     DC.B    $50,'INSTR'
  1430.     DC.B    0
  1431. L093E6    ; create entry in name-table and store value
  1432.     ANDI.B    #$F,1(A6,A2.L)
  1433.     TST.L    4(A6,A2.L)
  1434.     BGE.S    L093F6
  1435.     MOVEQ    #-12,D0        ;Bad Name error
  1436.     RTS
  1437. L093F6    JSR    L04E5E(PC)    ;*/undomodify BSR L04E5E
  1438.     MOVEA.L    BV_NTP(A6),A3    ;name table running pointer
  1439.     ADDQ.L    #8,BV_NTP(A6)    ;name table
  1440.                 ;running pointer
  1441.     MOVE.W    0(A6,A2.L),0(A6,A3.L)
  1442.     MOVE.W    D4,2(A6,A3.L)
  1443.     MOVEA.L    4(A6,A2.L),A2
  1444.     ADDA.L    BV_VVBAS(A6),A2    ;variable values
  1445.     MOVE.W    4(A6,A2.L),D1
  1446.     LSL.L    #2,D1
  1447.     ADDQ.W    #6,D1
  1448.     JSR    L07338(PC)    ;*/undomodify BSR L07338
  1449. L09420    MOVE.W    0(A6,A2.L),0(A6,A0.L)
  1450.     ADDQ.W    #2,A2
  1451.     ADDQ.W    #2,A0
  1452.     SUBQ.W    #2,D1
  1453.     BGT.S    L09420
  1454. L0942E    JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1455.     CMPI.W    #$8401,D1
  1456.     BEQ.S    L09456
  1457.     CMPI.W    #$8405,D1
  1458.     BNE    L094C2
  1459.     ADDQ.W    #2,A4
  1460.     MOVEA.L    A4,A0
  1461.     LEA    8(A3),A5
  1462.     JSR    L06272(PC)    ;*/undomodify BSR L06272
  1463.     LEA    -8(A5),A3
  1464.     MOVEA.L    A0,A4
  1465.     BNE.S    L0948E
  1466.     BRA.S    L0942E
  1467. L09456    ADDQ.W    #2,A4
  1468.     CMPI.B    #$02,0(A6,A3.L)
  1469.     BEQ.S    L09478
  1470.     CMPI.B    #$01,$01(A6,A3.L)
  1471.     BGT.S    L094C6
  1472.     MOVEA.L    $04(A6,A3.L),A2
  1473.     ADDA.L    BV_VVBAS(A6),A2    ;variable values
  1474.     CMPI.W    #$0001,$04(A6,A2.L)
  1475.     BGT.S    L094C6
  1476. L09478    MOVEA.L    A4,A0
  1477.     MOVE.B    $01(A6,A3.L),D0
  1478.     MOVE.L    A3,-(A7)
  1479.     JSR    L05A84(PC)    ;*/undomodify BSR L05A84
  1480.     MOVEA.L    (A7)+,A3
  1481.     MOVEA.L    A0,A4
  1482.     BNE.S    L0948E
  1483.     JSR    BP_LET(PC)    ;*/undomodify BSR BP_LET
  1484. L0948E    CMPI.B    #$03,0(A6,A3.L)
  1485.     BNE.S    L094AA
  1486.     MOVEA.L    $04(A6,A3.L),A2
  1487.     ADDA.L    BV_VVBAS(A6),A2    ;variable values
  1488.     MOVE.L    D0,-(A7)
  1489.     MOVE.L    A3,-(A7)
  1490.     JSR    L09A3C(PC)    ;*/undomodify BSR L09A3C
  1491.     MOVEA.L    (A7)+,A3
  1492.     MOVE.L    (A7)+,D0
  1493. L094AA    CLR.L    0(A6,A3.L)
  1494.     CLR.L    $04(A6,A3.L)
  1495.     ADDQ.W    #8,A3
  1496.     CMPA.L    BV_NTP(A6),A3    ;name table running pointer
  1497.     BNE.S    L094BE
  1498.     SUBQ.L    #8,BV_NTP(A6)    ;name table running pointer
  1499. L094BE    TST.L    D0
  1500.     RTS
  1501. L094C2    MOVEQ    #-$11,D0
  1502.     BRA.S    L0948E
  1503. L094C6    MOVEQ    #-$13,D0
  1504.     BRA.S    L0948E
  1505. L094CA:
  1506.                 ;*/undoinsert MOVEQ #$16,D1
  1507.                 ;*/undoinsert MOVEQ #$3C,D2
  1508.                 ;*/undomodify BSR L04E84
  1509.     JSR    L04E64(PC)    ;*/undomodify BSR L04E64
  1510.     MOVEA.L    BV_RTP(A6),A5    ;return table running ptr
  1511.     TST.B    D5
  1512.     BEQ.S    L09504
  1513.     MOVE.L    D4,D3
  1514.     MOVEA.L    BV_NTP(A6),A3    ;name table running pointer
  1515.     MOVE.L    A3,0(A6,A5.L)
  1516.     MOVE.L    A3,$04(A6,A5.L)
  1517.     MOVE.L    A3,$08(A6,A5.L)
  1518.     MOVE.W    $04(A6,A2.L),D4
  1519.     BNE.S    L094F2
  1520.     MOVEQ    #-$07,D0
  1521.     RTS
  1522. L094F2    MOVE.W    D4,$0C(A6,A5.L)
  1523.     MOVE.B    $01(A6,A2.L),$0E(A6,A5.L)
  1524.     SF    $0F(A6,A5.L)
  1525.     ADDA.W    #$0010,A5
  1526. L09504    MOVE.B    D5,0(A6,A5.L)
  1527.     MOVE.B    BV_STMNT(A6),$01(A6,A5.L) ;current stmnt on line
  1528.     MOVE.W    BV_LINUM(A6),$02(A6,A5.L) ;current line #
  1529.     MOVE.L    BV_INLIN(A6),$04(A6,A5.L) ;Processing inline clause
  1530.     ADDQ.W    #8,A5
  1531.     MOVE.L    A5,BV_RTP(A6)    ;return table running ptr
  1532.     TST.B    D5
  1533.     BEQ.S    L09580
  1534.     CMPI.B    #$03,D5
  1535.     BEQ.S    L09578
  1536.     MOVEA.L    A4,A0
  1537.     JSR    L0614A(PC)    ;*/undomodify BSR L0614A
  1538.     MOVEA.L    BV_RTP(A6),A5    ;return table running ptr
  1539.     MOVE.L    BV_NTP(A6),-$14(A6,A5.L) ;name table running ptr
  1540.     MOVE.L    BV_NTP(A6),-$10(A6,A5.L) ;name table running ptr
  1541.     TST.L    D0
  1542.     BNE.S    L09552
  1543.     MOVE.W    0(A6,A0.L),D1
  1544.     CMPI.B    #$02,D5
  1545.     BEQ.S    L09562
  1546.     BSR.S    L0959E
  1547.     BEQ.S    L09576
  1548. L09552    BSR    L097C8
  1549.     SUBI.L    #$00000018,BV_RTP(A6) ;return table running ptr
  1550.     MOVEQ    #-$0F,D0
  1551.     RTS
  1552. L09562    CMPI.W    #$8406,D1
  1553.     BNE.S    L09552
  1554.     ADDQ.W    #2,A0
  1555.     SUBA.L    BV_TKBAS(A6),A0    ;token list
  1556.     MOVE.L    A0,$0008(A7)
  1557.     ADDA.L    BV_TKBAS(A6),A0    ;token list
  1558. L09576    MOVEA.L    A0,A4
  1559. L09578    ST    -$09(A6,A5.L)
  1560.     MOVEA.L    -$18(A6,A5.L),A3
  1561. L09580    TST.B    BV_SING(A6)    ;Single line execution
  1562.                 ;ON ($FF) or OFF (0)
  1563.     BEQ.S    L095A2
  1564.     BSR.S    L0958E
  1565.     BEQ.S    L095A2
  1566.     MOVEQ    #-$07,D0
  1567.     BRA.S    L095B4
  1568. L0958E    MOVEA.L    BV_PFBAS(A6),A4    ;program file
  1569.     SF    BV_SING(A6)    ;Single line execution
  1570.                 ;ON ($FF) or OFF (0)
  1571.     CLR.W    BV_LENGTH(A6)    ;current length
  1572.     JMP    L0A966(PC)    ;*/undomodify BRA L0A966
  1573. L0959E    BRA    L09686
  1574. L095A2    TST.B    D5
  1575.     BEQ    L0A078
  1576.     BSR    L09760
  1577.     BSR    L09692
  1578. L095B0    BSR.S    L0960C
  1579.     BEQ.S    L095DC
  1580. L095B4    MOVEA.L    BV_RTP(A6),A5    ;return table running ptr
  1581.     MOVE.L    BV_NTP(A6),-$10(A6,A5.L)    ;name table
  1582.                     ;running pointer
  1583.     MOVE.L    BV_NTBAS(A6),D1    ;name table
  1584.     SUB.L    D1,-$18(A6,A5.L)
  1585.     SUB.L    D1,-$14(A6,A5.L)
  1586.     SUB.L    D1,-$10(A6,A5.L)
  1587.     TST.L    D0
  1588.     BNE.S    L095DA
  1589.     ADDQ.W    #4,A7
  1590.     JMP    L0A8C0(PC)    ;*/undomodify BRA L0A8C0
  1591.     MOVEQ    #0,D0
  1592. L095DA    RTS
  1593. L095DC    ADDQ.W    #2,A4
  1594.     BSR.S    L0965C
  1595.     CMPI.B    #$88,D0
  1596.     BNE.S    L095FE
  1597.     BSR.S    L09660
  1598.     BSR.S    L0965C
  1599.     CMPI.W    #$8405,D1
  1600.     BNE.S    L095FE
  1601.     ADDQ.B    #1,0(A6,A2.L)
  1602.     SUBQ.W    #4,A4
  1603.     JSR    L098E8(PC)    ;*/undomodify BSR L098E8
  1604.     BNE.S    L095B4
  1605.     BSR.S    L0965C
  1606. L095FE    CMPI.W    #$8404,D1
  1607.     BEQ.S    L095DC
  1608.     BSR.S    L0959E
  1609.     BEQ.S    L095B0
  1610.     MOVEQ    #-21,D0        ;Bad line error
  1611.     BRA.S    L095B4
  1612. L0960C    JSR    L0A60E(PC)    ;*/undomodify BSR L0A60E
  1613.     BNE.S    L09628
  1614.     BSR.S    L0965C
  1615.     MOVEQ    #0,D0
  1616.     CMPI.W    #$811E,D1
  1617.     BEQ.S    L0960C
  1618.     CMPI.W    #$8118,D1
  1619.     BEQ.S    L0960C
  1620.     CMPI.W    #$811A,D1
  1621.     RTS
  1622. L09628    MOVEQ    #-10,D0        ;End of file error
  1623.     RTS
  1624. ; <---------- ??????????
  1625. L0962C    MOVEQ    #0,D0
  1626.     MOVE.W    2(A6,A4.L),D0
  1627.     LSL.L    #3,D0
  1628.     MOVEA.L    BV_NTBAS(A6),A2    ;name table
  1629.     ADDA.L    D0,A2
  1630.     MOVE.W    0(A6,A2.L),D0
  1631.     MOVE.W    0(A6,A3.L),0(A6,A2.L)
  1632.     MOVE.W    D0,0(A6,A3.L)
  1633.     MOVE.L    4(A6,A2.L),D0
  1634.     MOVE.L    4(A6,A3.L),4(A6,A2.L)
  1635.     MOVE.L    D0,4(A6,A3.L)
  1636.     ADDQ.W    #8,A3
  1637.     ADDQ.W    #4,A4
  1638.     RTS
  1639. L0965C    JMP    L0A56C(PC)    ;*/undomodify BRA L0A56C
  1640. L09660    MOVEA.L    BV_NTP(A6),A3    ;name table running ptr
  1641.     MOVE.B    #$02,0(A6,A3.L)
  1642.     MOVE.W    #$FFFF,$02(A6,A3.L)
  1643.     MOVE.L    #$FFFFFFFF,$04(A6,A3.L)
  1644.     BSR.S    L0962C
  1645.     MOVE.B    -$07(A6,A3.L),$01(A6,A2.L)
  1646.     MOVE.L    A3,BV_NTP(A6)    ;name table running pointer
  1647.     RTS
  1648. L09686    CMPI.W    #$840A,D1
  1649.     BEQ.S    L09690
  1650.     CMPI.W    #$8402,D1
  1651. L09690    RTS
  1652. L09692    BSR.S    L0965C
  1653.     ADDQ.W    #2,A4
  1654.     BSR.S    L0965C
  1655.     ADDQ.W    #2,A4
  1656.     BSR.S    L0965C
  1657.     TST.W    D3
  1658.     BLT.S    L096A6
  1659.     CMP.W    $02(A6,A4.L),D3
  1660.     BNE.S    L096B4
  1661. L096A6    ADDQ.W    #4,A4
  1662.     BSR.S    L0965C
  1663.     CMPI.W    #$8405,D1
  1664.     BEQ.S    L096C0
  1665.     BSR.S    L09686
  1666.     BEQ.S    L096BA
  1667. L096B4    ADDQ.W    #4,A7
  1668. L096B6    MOVEQ    #-7,D0        ;Not found error
  1669.     RTS
  1670. L096BA    MOVEA.L    -$14(A6,A5.L),A3
  1671.     RTS
  1672. L096C0    ADDQ.W    #2,A4
  1673. L096C2    BSR.S    L0965C
  1674.     CMPI.B    #$88,D0
  1675.     BNE.S    L096DE
  1676.     CMPA.L    -$14(A6,A5.L),A3
  1677.     BLT.S    L096D8
  1678.     BSR.S    L09660
  1679.     MOVE.L    A3,-$14(A6,A5.L)
  1680.     BRA.S    L096C2
  1681. L096D8    BSR    L0962C
  1682.     BRA.S    L096C2
  1683. L096DE    CMPI.W    #$8406,D1
  1684.     BNE.S    L096C0
  1685. L096E4    RTS
  1686. DO_RETURn ; execute RETURN
  1687.     MOVEA.L    BV_RTP(A6),A5    ;return table running ptr
  1688.     CMPA.L    BV_RTBAS(A6),A5    ;return table
  1689.     BLE.S    L096B6
  1690.     MOVE.B    -$08(A6,A5.L),D5
  1691.     BEQ.S    L09718
  1692.     MOVE.B    D5,D0
  1693.     SUBQ.B    #2,D0
  1694.     BLT.S    L09714
  1695.     MOVE.B    -$0A(A6,A5.L),D0
  1696.     MOVEA.L    A4,A0
  1697.     JSR    L05A84(PC)    ;*/undomodify BSR L05A84
  1698.     MOVEA.L    A0,A4
  1699.     BLT.S    L096E4
  1700.     BEQ.S    L09710
  1701.     MOVEQ    #-$11,D0
  1702.     RTS
  1703. L09710    MOVEA.L    BV_RTP(A6),A5    ;return table running ptr
  1704. L09714    BSR.S    L09768
  1705.     BNE.S    L096E4
  1706. L09718    MOVE.L    -$04(A6,A5.L),BV_INLIN(A6) ;Processing inline clause
  1707.     MOVE.W    -$06(A6,A5.L),D4
  1708.     BSR.S    L09760
  1709.     MOVE.L    -$04(A6,A5.L),BV_INLIN(A6) ;Processing inline clause
  1710.     MOVE.B    -$07(A6,A5.L),D4
  1711.     JSR    L0A00A(PC)    ;*/undomodify BSR L0A00A
  1712.     SUBQ.W    #8,A5
  1713.     TST.B    D5
  1714.     BEQ.S    L0973C
  1715.     SUBA.W    #$0010,A5
  1716. L0973C    SF    $0090(A6)    ;Need to unravel
  1717.                 ;($ff) or not (0)
  1718.     MOVE.L    A5,BV_RTP(A6)    ;return table running ptr
  1719.     MOVEQ    #0,D0
  1720.     SUBQ.B    #2,D5
  1721.     BLT.S    L0975C
  1722.     MOVEA.L    BV_NTP(A6),A5    ;name table running pointer
  1723.     MOVE.B    #$01,-$08(A6,A5.L)
  1724.     ADDQ.W    #8,A7
  1725.     MOVEA.L    (A7)+,A0
  1726.     ADDA.L    BV_TKBAS(A6),A0    ;token list
  1727. L0975C    TST.L    D0
  1728.     RTS
  1729. L09760    JSR    L09FA2(PC)    ;*/undomodify BSR L09FA2
  1730.     JMP    L0A966(PC)    ;*/undomodify BRA L0A966
  1731. L09768    MOVE.L    BV_NTBAS(A6),D0    ;name table
  1732.     ADD.L    D0,-$18(A6,A5.L)
  1733.     ADD.L    D0,-$14(A6,A5.L)
  1734.     ADD.L    D0,-$10(A6,A5.L)
  1735.     CMPA.L    BV_PFBAS(A6),A4    ;program file
  1736.     BLE.S    L09784
  1737.     CMPA.L    BV_PFP(A6),A4    ;program running pointer
  1738.     BLT.S    L09788
  1739. L09784    BSR    L0958E
  1740. L09788    TST.B    -9(A6,A5.L)
  1741.     BEQ.S    L097C8
  1742.     MOVE.W    -$0C(A6,A5.L),D4
  1743.     MOVEA.L    -$14(A6,A5.L),A3
  1744.     BSR.S    L09760
  1745. L09798    BSR    L0960C
  1746.     BNE.S    L097B0
  1747. L0979E    MOVE.W    #$8800,D4
  1748.     JSR    L0A5E0(PC)    ;*/undomodify BSR L0A5E0
  1749.     BNE.S    L09798
  1750.     BSR    L0962C
  1751.     SUBQ.W    #4,A4
  1752.     BRA.S    L0979E
  1753. L097B0    MOVE.W    -$0C(A6,A5.L),D4
  1754.     MOVEA.L    -$18(A6,A5.L),A3
  1755.     TST.B    D0
  1756.     BEQ.S    L097C0
  1757.     BSR    L0958E
  1758. L097C0    BSR.S    L09760
  1759.     MOVEQ    #-$01,D3
  1760.     BSR    L09692
  1761. L097C8    MOVEA.L    -$18(A6,A5.L),A3
  1762.     MOVEA.L    -$10(A6,A5.L),A5
  1763.     JSR    STO_VARValue(PC)    ;*/undomodify BSR STO_VARValue
  1764.     BNE.S    L0975C
  1765.     MOVEA.L    BV_RTP(A6),A5    ;return table running ptr
  1766.     RTS
  1767. L097DC    BSR.S    L097E0
  1768.     RTS
  1769. L097E0    MOVEA.L    BV_CHBAS(A6),A0    ;channel name
  1770.     MOVEA.L    0(A6,A0.L),A0
  1771.     MOVE.L    D0,-(A7)
  1772.     MOVEQ    #-$1B,D0
  1773.     JSR    UT_ERR(PC)    ;*/undomodify BSR UT_ERR
  1774.     MOVE.L    (A7)+,D0
  1775. L097F2    MOVEA.L    BV_RTP(A6),A5    ;return table running ptr
  1776.     CMPA.L    BV_RTBAS(A6),A5    ;return table
  1777.     BLE.S    L09828
  1778.     MOVE.B    -$08(A6,A5.L),D5
  1779.     BEQ.S    L0980A
  1780.     BSR    L09768
  1781.     SUBA.W    #$0010,A5
  1782. L0980A    SUBQ.W    #8,A5
  1783.     MOVE.L    A5,BV_RTP(A6)    ;return table running ptr
  1784.     SUBQ.B    #2,D5
  1785.     BLT.S    L097F2
  1786.     MOVEA.L    BV_NTP(A6),A5    ;name table running pointer
  1787.     SUBQ.W    #8,A5
  1788. L0981A    MOVEQ    #0,D2
  1789.     JSR    L05CBC(PC)    ;*/undomodify BSR L05CBC
  1790.     BNE.S    L0981A
  1791.     MOVE.L    A5,BV_NTP(A6)    ;name table running pointer
  1792.     BRA.S    L097F2
  1793. L09828    SF    BV_UNRVL(A6)    ;Need to unravel
  1794.                 ;($ff) or not (0)
  1795.     MOVEA.L    (A7)+,A3
  1796.     MOVEA.L    (A7)+,A5
  1797.     TRAP    #0
  1798.     MOVEA.L    BV_SSBAS(A6),A1    ;system stack running ptr
  1799.     ADDA.L    A6,A1
  1800.     SUBQ.W    #4,A1
  1801.     MOVE.L    A1,USP
  1802.     MOVE.W    #0,SR
  1803.     MOVE.L    A5,-(A7)
  1804.     MOVE.L    A3,-(A7)
  1805.     ST    BV_SING(A6)    ;Single line execution
  1806.                 ;ON ($FF) or OFF (0)
  1807.     TST.B    $00B8(A6)    ;
  1808.     BNE    L0A6EE
  1809.     RTS
  1810. L09852    MOVE.L    A4,-(A7)
  1811.     JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  1812.     BLT.S    L09872
  1813. L0985A    ADDQ.W    #2,A4
  1814.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1815.     MOVE.L    A4,-(A7)
  1816.     JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  1817.     CMPA.L    (A7)+,A4
  1818.     BNE.S    L09870
  1819.     TST.B    D0
  1820.     BGE.S    L0985A
  1821.     BRA.S    L09872
  1822. L09870    MOVEQ    #0,D0
  1823. L09872    MOVEA.L    (A7)+,A4
  1824.     RTS
  1825. L09876    MOVEQ    #0,D6
  1826.     MOVE.L    A4,D3
  1827. L0987A    MOVE.W    0(A6,A4.L),D1
  1828.     CMPI.W    #$810A,D1
  1829.     BEQ.S    L098A0
  1830.     JSR    L09686(PC)    ;*/undomodify BSR L09686
  1831.     BEQ.S    L098A2
  1832.     CMPI.W    #$8401,D1
  1833.     BNE.S    L0989A
  1834.     TST.B    D6
  1835.     BNE.S    L0989A
  1836.     ADDQ.W    #2,A4
  1837.     MOVE.L    A4,D3
  1838.     MOVEQ    #$01,D6
  1839. L0989A    JSR    L09072(PC)    ;*/undomodify BSR L09072
  1840.     BRA.S    L0987A
  1841. L098A0    MOVEQ    #-1,D0
  1842. L098A2    MOVEA.L    D3,A4
  1843.     RTS
  1844. L098A6    ;execute DEFine
  1845.     MOVEQ    #7,D2
  1846. L098A8    JSR    L0A60E(PC)    ;*/undomodify BSR L0A60E
  1847.     BNE.S    L098C2
  1848.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1849.     CMPI.W    #$8101,D1
  1850.     BNE.S    L098A8
  1851.     ADDQ.W    #2,A4
  1852.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1853.     CMP.B    D2,D1
  1854.     BNE.S    L098A8
  1855. L098C2    MOVEQ    #0,D0
  1856.     RTS
  1857. L098C6    ;execute DIM
  1858.     MOVEM.L    D4-D6/A5,-(A7)
  1859.     SUBQ.W    #2,A4
  1860. L098CC    ADDQ.W    #2,A4
  1861.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1862.     BSR.S    L098E8
  1863.     BNE.S    L098E2
  1864.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1865.     CMPI.W    #$8404,D1
  1866.     BEQ.S    L098CC
  1867.     MOVEQ    #0,D0
  1868. L098E2    MOVEM.L    (A7)+,D4-D6/A5
  1869.     RTS
  1870. L098E8    MOVEQ    #0,D4
  1871.     MOVE.W    $02(A6,A4.L),D4
  1872.     ADDQ.W    #4,A4
  1873.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1874.     ADDQ.W    #2,A4
  1875.     MOVEQ    #0,D5
  1876.     MOVEA.L    (A6),A5
  1877.     MOVEA.L    A4,A0
  1878. L098FC    MOVE.L    A5,-(A7)
  1879.     JSR    L05A82(PC)    ;*/undomodify BSR L05A82
  1880.     MOVEA.L    (A7)+,A5
  1881.     MOVEA.L    A0,A4
  1882.     BNE.S    L09980
  1883.     ADDQ.L    #1,D5
  1884.     MOVE.W    0(A6,A1.L),0(A6,A5.L)
  1885.     BLT.S    L0997A
  1886.     ADDQ.W    #4,A5
  1887.     ADDQ.L    #2,BV_RIP(A6)    ;arith stack
  1888.     ADDQ.W    #2,A0
  1889.     CMPI.W    #$8404,-$02(A6,A0.L)
  1890.     BEQ.S    L098FC
  1891.     CMPI.W    #$8406,-$02(A6,A0.L)
  1892.     BNE.S    L0997E
  1893.     LSL.L    #3,D4
  1894.     MOVEA.L    BV_NTBAS(A6),A3    ;name table
  1895.     ADDA.L    D4,A3
  1896.     CMPI.B    #3,0(A6,A3.L)    ;array ?
  1897.     BNE.S    L09982
  1898.     MOVE.B    1(A6,A3.L),D6    ;get variablle type
  1899.     CMPI.B    #1,D6        ;string ?
  1900.     BNE.S    L09958
  1901.     MOVE.W    -4(A6,A5.L),D1
  1902.     ADDQ.W    #1,D1
  1903.     BCLR    #0,D1
  1904.     MOVE.W    D1,-4(A6,A5.L)
  1905.     BLE.S    L0997A
  1906.     MOVEQ    #2,D1
  1907.     BRA.S    L0995A
  1908. L09958    MOVEQ    #1,D1
  1909. L0995A    MOVE.L    D5,D0
  1910.     MOVEQ    #1,D2
  1911. L0995E    SUBQ.W    #4,A5
  1912.     MOVE.W    D2,2(A6,A5.L)
  1913.     SUBQ.L    #1,D0
  1914.     BEQ.S    L09986
  1915.     MOVE.L    D1,D3
  1916.     MOVEQ    #1,D1
  1917.     ADD.W    0(A6,A5.L),D3
  1918.     MULU    D3,D2
  1919.     MOVE.L    D2,D3
  1920.     SWAP    D3
  1921.     TST.W    D3
  1922.     BEQ.S    L0995E
  1923. L0997A    MOVEQ    #-4,D0        ;out of range
  1924.     RTS
  1925. L0997E    MOVEQ    #-17,D0        ;error in expression
  1926. L09980    RTS
  1927. L09982    MOVEQ    #-12,D0        ;Bad name
  1928.     RTS
  1929. L09986    MOVEA.L    A0,A4
  1930.     MOVE.L    4(A6,A3.L),D4
  1931.     BLT.S    L09990
  1932.     BSR.S    L099FE
  1933. L09990    MOVE.L    D5,D1
  1934.     LSL.L    #2,D1
  1935.     ADDQ.L    #6,D1
  1936.     MOVE.L    A3,-(A7)
  1937.     JSR    L04DF6(PC)    ;*/undomodify BSR L04DF6
  1938.     MOVEA.L    (A7)+,A3
  1939.     MOVE.L    A0,D1
  1940.     SUB.L    BV_VVBAS(A6),D1    ;variable values
  1941.     MOVE.L    D1,$04(A6,A3.L)
  1942.     MOVE.L    A0,-(A7)
  1943.     MOVE.W    D5,$04(A6,A0.L)
  1944.     ADDQ.W    #6,A0
  1945. L099B0    MOVE.L    0(A6,A5.L),0(A6,A0.L)
  1946.     ADDQ.W    #4,A5
  1947.     ADDQ.W    #4,A0
  1948.     SUBQ.L    #1,D5
  1949.     BGT.S    L099B0
  1950.     MOVEA.L    (A6),A5
  1951.     MOVEQ    #$01,D1
  1952.     ADD.W    0(A6,A5.L),D1
  1953.     MULU    $02(A6,A5.L),D1
  1954.     SUBQ.B    #2,D6
  1955.     BLT.S    L099DC
  1956.     BEQ.S    L099D4
  1957.     ADD.L    D1,D1
  1958.     BRA.S    L099DC
  1959. L099D4    ADD.L    D1,D1
  1960.     MOVE.L    D1,D0
  1961.     ADD.L    D1,D1
  1962.     ADD.L    D0,D1
  1963. L099DC    MOVE.L    A3,-(A7)
  1964.     JSR    L04DF6(PC)    ;*/undomodify BSR L04DF6
  1965.     MOVEA.L    (A7)+,A3
  1966.     MOVE.L    A0,D2
  1967.     SUB.L    BV_VVBAS(A6),D2    ;variable values
  1968.     MOVEA.L    (A7)+,A2
  1969.     MOVE.L    D2,0(A6,A2.L)
  1970. L099F0    CLR.W    0(A6,A0.L)
  1971.     ADDQ.W    #2,A0
  1972.     SUBQ.L    #2,D1
  1973.     BGT.S    L099F0
  1974.     MOVEQ    #0,D0
  1975.     RTS
  1976. L099FE    MOVEA.L    BV_VVBAS(A6),A2    ;variable values
  1977.     ADDA.L    D4,A2
  1978.     MOVEQ    #$01,D2
  1979.     ADD.W    $06(A6,A2.L),D2
  1980.     MULU    $08(A6,A2.L),D2
  1981.     MOVE.B    D6,D1
  1982.     SUBQ.B    #2,D1
  1983.     BLT.S    L09A22
  1984.     BEQ.S    L09A1A
  1985.     ADD.L    D2,D2
  1986.     BRA.S    L09A22
  1987. L09A1A    ADD.L    D2,D2
  1988.     MOVE.L    D2,D1
  1989.     ADD.L    D2,D2
  1990.     ADD.L    D1,D2
  1991. L09A22    MOVE.L    D2,D1
  1992.     MOVEA.L    BV_VVBAS(A6),A0    ;variable values
  1993.     ADDA.L    0(A6,A2.L),A0
  1994.     MOVE.L    A3,-(A7)
  1995.     MOVE.L    A2,-(A7)
  1996.     JSR    L04FE8(PC)    ;*/undomodify BSR L04FE8
  1997.     MOVEA.L    (A7)+,A2
  1998.     BSR.S    L09A3C
  1999.     MOVEA.L    (A7)+,A3
  2000.     RTS
  2001. L09A3C    MOVEQ    #0,D1
  2002.     MOVE.W    $04(A6,A2.L),D1
  2003.     LSL.L    #2,D1
  2004.     ADDQ.L    #6,D1
  2005.     MOVEA.L    A2,A0
  2006.     JMP    L04FE8(PC)    ;*/undomodify BRA L04FE8
  2007. L09A4C    ; execute ELSE
  2008.     MOVEQ    #0,D4
  2009. L09A4E    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2010.     BGE.S    L09A5A
  2011.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2012.     BNE.S    L09AA4
  2013. L09A5A    JSR    L0A60E(PC)    ;*/undomodify BSR L0A60E
  2014.     BNE.S    L09AA4
  2015.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2016.     CMPI.B    #$81,D0
  2017.     BNE.S    L09A4E
  2018.     ADDQ.W    #2,A4
  2019.     CMPI.B    #$03,D1
  2020.     BNE.S    L09A8C
  2021.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  2022.     BLT.S    L09A88
  2023.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2024.     BNE.S    L09A88
  2025. L09A7E    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2026.     BLT.S    L09A5A
  2027.     ADDQ.W    #2,A4
  2028.     BRA.S    L09A7E
  2029. L09A88    ADDQ.W    #1,D4
  2030.     BRA.S    L09A4E
  2031. L09A8C    CMPI.B    #$01,D1
  2032.     BNE.S    L09A4E
  2033.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2034.     CMPI.W    #$8103,D1
  2035.     BNE.S    L09A4E
  2036.     TST.B    D4
  2037.     BEQ.S    L09AA4
  2038.     SUBQ.W    #1,D4
  2039.     BRA.S    L09A4E
  2040. L09AA4    MOVEQ    #0,D0
  2041.     RTS
  2042. L09AA8    ; execute END
  2043.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2044.     CMPI.W    #$8107,D1
  2045.     BEQ    DO_RETURn
  2046.     CMPI.W    #$8106,D1
  2047.     BEQ.S    L09AE6
  2048.     MOVEQ    #6,D5
  2049.     CMPI.W    #$8104,D1
  2050.     BEQ.S    L09ACA
  2051.     MOVEQ    #7,D5
  2052.     CMPI.W    #$8102,D1
  2053.     BNE.S    L09B28
  2054. L09ACA    ADDQ.W    #2,A4
  2055.     JSR    L0A09E(PC)    ;*/undomodify BSR L0A09E
  2056.     BNE.S    L09B2A
  2057.     CMP.B    D5,D1
  2058.     BNE.S    L09B2E
  2059.     MOVE.W    BV_LINUM(A6),$08(A6,A2.L) ;current line #
  2060.     MOVE.B    BV_STMNT(A6),$0B(A6,A2.L) ;current stmnt on line
  2061.     JMP    L0A37A(PC)    ;*/undomodify BRA L0A37A
  2062. L09AE6    TST.B    $00C0(A6)    ;
  2063.     BNE    BAS_CONTinue
  2064. L09AEE    MOVE.W    BV_LINUM(A6),D4    ;current line #
  2065.     MOVEQ    #-1,D3
  2066.     JSR    L0ACC2(PC)    ;*/undomodify BSR L0ACC2
  2067.     BNE.S    L09B28
  2068. L09AFA    MOVE.W    $08(A6,A2.L),D4
  2069.     SEQ    BV_SING(A6)    ;Single line execution
  2070.                 ;ON ($FF) or OFF (0)
  2071.     MOVE.B    $0A(A6,A2.L),-(A7)
  2072.     MOVE.B    $0B(A6,A2.L),BV_INLIN(A6) ;Processing inline clause
  2073.     MOVE.W    $0C(A6,A2.L),BV_INDEX(A6) ;Name tab row of last lp
  2074.     ST    $08(A6,A2.L)
  2075.     JSR    L09FA2(PC)    ;*/undomodify BSR L09FA2
  2076.     BNE.S    L09B2C
  2077.     JSR    L0A96A(PC)    ;*/undomodify BSR L0A96A
  2078.     BNE.S    L09B2C
  2079.     MOVE.B    (A7)+,D4
  2080.     JSR    L0A00A(PC)    ;*/undomodify BSR L0A00A
  2081. L09B28    MOVEQ    #0,D0
  2082. L09B2A    RTS
  2083. L09B2C    ADDQ.W    #2,A7
  2084. L09B2E    MOVEQ    #-$07,D0
  2085.     RTS
  2086. L09B32    MOVEQ    #0,D0
  2087.     MOVE.W    0(A6,A4.L),D1
  2088.     CMPI.W    #$8402,D1
  2089.     BEQ.S    L09B5C
  2090.     CMPI.W    #$840A,D1
  2091.     BEQ.S    L09B5A
  2092.     MOVEQ    #$01,D0
  2093.     CMPI.W    #$811C,D1
  2094.     BEQ.S    L09B5C
  2095.     MOVEQ    #$02,D0
  2096.     CMPI.W    #$8114,D1
  2097.     BEQ.S    L09B5C
  2098.     JSR    L09072(PC)    ;*/undomodify BSR L09072
  2099.     BRA.S    L09B32
  2100. L09B5A    MOVEQ    #-$01,D0
  2101. L09B5C    RTS
  2102. L09B5E    MOVE.W    BV_LINUM(A6),BV_CNLNO(A6) ;current line #
  2103.     TST.B    BV_SING(A6)    ;Single line execution
  2104.                 ;ON ($FF) or OFF (0)
  2105.     BEQ.S    L09B70
  2106.     MOVE.W    #$FFFF,BV_CNLNO(A6) ;Line to CONTINUE from
  2107. L09B70    MOVE.B    BV_STMNT(A6),BV_CNSTM(A6) ;current stmnt on line
  2108.     MOVE.B    BV_INLIN(A6),BV_CNINL(A6) ;Processing inline clause
  2109.     MOVE.W    BV_INDEX(A6),BV_CNIND(A6) ;Name tab row of last lp
  2110.     MOVE.L    BV_RTP(A6),D1    ;return table running ptr
  2111.     SUB.L    BV_RTBAS(A6),D1    ;return table
  2112.     SNE    $0090(A6)    ;Need to unravel
  2113.                 ;($ff) or not (0)
  2114.     RTS
  2115. L09B90    MOVEQ    #-$01,D0
  2116. L09B92    TST.B    $00C0(A6)
  2117.     BNE.S    L09BB6
  2118.     BSR.S    L09B5E
  2119.     BRA.S    L09BD4
  2120. L09B9C    ; error handling
  2121.     ST    BV_SING(A6)    ;Single line execution
  2122.                 ;ON ($FF) or OFF (0)
  2123.     CMPI.L    #-21,D0        ;bad line
  2124.     BEQ.S    L09B92
  2125. L09BA8    CMPI.L    #-1,D0        ;not complete
  2126.     BEQ.S    L09B92
  2127.     TST.B    $C0(A6)
  2128.     BEQ.S    L09BC0
  2129. L09BB6    BSR.S    L09BD4
  2130.     MOVEQ    #-26,D0
  2131.     JSR    UT_ERR(PC)    ;*/undomodify BSR UT_ERR
  2132.     BRA.S    L09C18
  2133. L09BC0    BSR.S    L09B5E
  2134.     MOVE.W    BV_LINUM(A6),$00C6(A6) ;current line #
  2135.     MOVE.L    D0,$00C2(A6)    ;
  2136.     BGE.S    L09C18
  2137.     MOVE.W    $00BC(A6),D4    ;
  2138.     BNE.S    L09C1C
  2139. L09BD4    MOVEA.L    BV_CHBAS(A6),A0    ;channel name
  2140.     MOVEA.L    0(A6,A0.L),A0
  2141. L09BDC    MOVE.W    #$FFFF,BV_NXLIN(A6) ;line # to start after
  2142.     TST.B    BV_SING(A6)    ;Single line execution
  2143.                 ;ON ($FF) or OFF (0)
  2144.     BNE.S    L09C14
  2145.     MOVE.L    D0,-(A7)
  2146.     MOVEQ    #-$16,D0
  2147.     JSR    UT_ERR(PC)    ;*/undomodify BSR UT_ERR
  2148.     MOVEA.L    A0,A5
  2149.     MOVEA.W    #$0068,A1
  2150.     MOVEA.L    (A6),A0
  2151.     JSR    CN_ITOD(PC)    ;*/undomodify BSR CN_ITOD
  2152.     MOVE.B    #$20,0(A6,A0.L)
  2153.     ADDQ.W    #1,D1
  2154.     MOVEA.L    (A6),A1        ;string to be send
  2155.     MOVE.W    D1,D2        ;number of bytes to be send
  2156.     MOVEA.L    A5,A0        ;channel ID
  2157.     MOVEQ    #7,D0        ;IO.SSTRG send a string of
  2158.                 ;bytes
  2159.     MOVEQ    #-1,D3
  2160.     TRAP    #4
  2161.     TRAP    #3
  2162.     MOVE.L    (A7)+,D0
  2163. L09C14    JSR    UT_ERR(PC)    ;*/undomodify BSR UT_ERR
  2164. L09C18    MOVEQ    #-1,D0        ;not complete
  2165.     RTS
  2166. L09C1C    ST    $C0(A6)        ;not defined in advanced
  2167.                 ;user guide !!!!!
  2168.     MOVE.L    D0,-(A7)
  2169.     TST.B    BV_SING(A6)    ;Single line execution
  2170.                 ;ON ($FF) or OFF (0)
  2171.     BEQ.S    L09C2E
  2172.     JSR    L0958E(PC)    ;*/undomodify BSR L0958E
  2173.     BNE.S    L09C56
  2174. L09C2E    JSR    L09FA2(PC)    ;*/undomodify BSR L09FA2
  2175.     JSR    L0A966(PC)    ;*/undomodify BSR L0A966
  2176.     BNE.S    L09C56
  2177.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2178.     CMPI.W    #$8106,D1
  2179.     BNE.S    L09C56
  2180.     ADDQ.W    #4,A7
  2181.     MOVE.B    $00BF(A6),BV_INLIN(A6)
  2182.     MOVE.B    $00BE(A6),D4
  2183.     JSR    L0A00A(PC)    ;*/undomodify BSR L0A00A
  2184.     JMP    L0A90C(PC)    ;*/undomodify BRA L0A90C
  2185. L09C56    CLR.W    $BC(A6)
  2186.     SF    $C0(A6)
  2187.     MOVE.L    (A7)+,D0
  2188.     BRA    L09BD4
  2189. L09C64    ; execute EXIT
  2190.     JSR    L0A09E(PC)    ;*/undomodify BSR L0A09E
  2191.     BNE    L09CFC
  2192.     MOVE.W    8(A6,A2.L),D4
  2193.     BEQ.S    L09C88
  2194.     JSR    L09FA2(PC)    ;*/undomodify BSR L09FA2
  2195.     BNE.S    L09C86
  2196.     JSR    L0A966(PC)    ;*/undomodify BSR L0A966
  2197.     BNE.S    L09C86
  2198.     MOVE.B    $0B(A6,A2.L),D4
  2199.     JSR    L0A00A(PC)    ;*/undomodify BSR L0A00A
  2200. L09C86    BRA.S    L09CFA
  2201. L09C88    MOVE.W    -$02(A6,A4.L),D4
  2202.     MOVEQ    #$07,D5
  2203.     SUB.B    D1,D5
  2204. L09C90    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2205.     BLT.S    L09C9E
  2206.     ADDQ.W    #2,A4
  2207.     ADDQ.B    #1,BV_STMNT(A6)    ;current stmnt on line
  2208.     BRA.S    L09CC0
  2209. L09C9E    TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2210.     BEQ.S    L09CB2
  2211.     SF    BV_INLIN(A6)    ;Processing inline clause
  2212.     MOVE.W    BV_LINUM(A6),D0    ;current line #
  2213.     CMP.W    $06(A6,A2.L),D0
  2214.     BEQ.S    L09CFA
  2215. L09CB2    TST.B    BV_SING(A6)    ;Single line execution
  2216.                 ;ON ($FF) or OFF (0)
  2217.     BNE.S    L09CFA
  2218.     ADDQ.W    #2,A4
  2219.     JSR    L0A966(PC)    ;*/undomodify BSR L0A966
  2220.     BNE.S    L09CFA
  2221. L09CC0    JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2222.     CMPI.W    #$8101,D1
  2223.     BNE.S    L09C90
  2224.     ADDQ.W    #2,A4
  2225.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2226.     TST.B    D5
  2227.     BEQ.S    L09CDC
  2228.     CMPI.W    #$8104,D1
  2229.     BNE.S    L09C90
  2230.     BRA.S    L09CE2
  2231. L09CDC    CMPI.W    #$8102,D1
  2232.     BNE.S    L09C90
  2233. L09CE2    ADDQ.W    #2,A4
  2234.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2235.     CMP.W    $02(A6,A4.L),D4
  2236.     BNE.S    L09C90
  2237.     MOVE.W    BV_LINUM(A6),$08(A6,A2.L) ;current line #
  2238.     MOVE.B    BV_STMNT(A6),$0B(A6,A2.L) ;current stmnt on line
  2239. L09CFA    MOVEQ    #0,D0
  2240. L09CFC    RTS
  2241. L09CFE    MOVEQ    #0,D5
  2242. L09D00    BSR.S    L09D46
  2243.     BNE.S    L09D56
  2244.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2245.     CMPI.B    #$81,D0
  2246.     BNE.S    L09D00
  2247.     ADDQ.W    #2,A4
  2248.     CMPI.B    #$01,D1
  2249.     BNE.S    L09D26
  2250.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2251.     CMPI.W    #$8105,D1
  2252.     BNE.S    L09D00
  2253.     SUBQ.W    #1,D5
  2254.     BLT.S    L09D56
  2255.     BRA.S    L09D00
  2256. L09D26    CMPI.B    #$05,D1
  2257.     BNE.S    L09D00
  2258.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  2259.     BLT.S    L09D38
  2260.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2261.     BEQ.S    L09D3C
  2262. L09D38    ADDQ.W    #1,D5
  2263.     BRA.S    L09D00
  2264. L09D3C    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2265.     BLT.S    L09D00
  2266.     ADDQ.W    #2,A4
  2267.     BRA.S    L09D3C
  2268. L09D46    JSR    L0A60E(PC)    ;*/undomodify BSR L0A60E
  2269.     BNE.S    L09D64
  2270.     TST.B    D0
  2271.     BEQ.S    L09D56
  2272.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2273.     BNE.S    L09D5A
  2274. L09D56    MOVEQ    #0,D0
  2275.     RTS
  2276. L09D5A    SUBQ.W    #8,A4
  2277.     MOVE.W    $02(A6,A4.L),D0
  2278.     SUB.W    D0,BV_LENGTH(A6)    ;current length
  2279. L09D64    TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2280.     BGT.S    L09D6E
  2281.     SF    BV_INLIN(A6)    ;Processing inline clause
  2282. L09D6E    MOVEQ    #$01,D0
  2283.     RTS
  2284. L09D72    MOVEQ    #0,D5
  2285. L09D74:
  2286.     JSR    L09D46(PC)    ;*/undomodify BSR.S L09D46
  2287.                 ;*/undomodify nop
  2288.     BNE.S    L09DEC
  2289.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2290.     CMPI.W    #$8401,D1
  2291.     BNE.S    L09D8C
  2292.     ADDQ.W    #2,A4
  2293.     TST.B    D5
  2294.     BEQ.S    L09DEE
  2295.     BRA.S    L09D74
  2296. L09D8C:
  2297.     CMPI.B    #$81,D0
  2298.     BNE.S    L09D74
  2299.     CMPI.B    #$15,D1
  2300.     BNE.S    L09DB6
  2301.     TST.B    D5
  2302.     BNE.S    L09D74
  2303.     JSR    L09876(PC)    ;*/undomodify BSR L09876
  2304.     BLT.S    L09D74
  2305.     MOVEA.L    A4,A3
  2306. L09DA4    SUBQ.W    #2,A3
  2307.     CMPI.W    #$8800,0(A6,A3.L)
  2308.     BNE.S    L09DA4
  2309.     CMP.W    $02(A6,A3.L),D4
  2310.     BNE.S    L09D74
  2311.     BRA.S    L09DEE
  2312. L09DB6    CMPI.B    #$05,D1
  2313.     BNE.S    L09DD6
  2314.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  2315.     BLT.S    L09DC8
  2316.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2317.     BEQ.S    L09DCC
  2318. L09DC8    ADDQ.W    #1,D5
  2319.     BRA.S    L09D74
  2320. L09DCC    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2321.     BLT.S    L09D74
  2322.     ADDQ.W    #2,A4
  2323.     BRA.S    L09DCC
  2324. L09DD6    CMPI.B    #$01,D1
  2325.     BNE.S    L09D74
  2326.     ADDQ.W    #2,A4
  2327.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2328.     CMPI.W    #$8105,D1
  2329.     BNE.S    L09D74
  2330.     SUBQ.W    #1,D5
  2331.     BGE.S    L09D74
  2332. L09DEC    RTS
  2333. L09DEE    MOVEQ    #0,D0
  2334.     RTS
  2335. L09DF2    ; execute FOR
  2336.     MOVEA.L    A4,A5
  2337.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2338.     MOVEQ    #0,D4
  2339.     MOVE.W    2(A6,A4.L),D4
  2340.     ADDQ.W    #4,A4
  2341.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  2342.     BLT.S    L09E10
  2343.     MOVE.B    #1,BV_INLIN(A6)    ;Processing inline clause
  2344.     MOVE.W    D4,BV_INDEX(A6)    ;Name tab row of last lp
  2345. L09E10    JSR    L09F96(PC)    ;*/undomodify BSR L09F96
  2346.     MOVE.B    1(A6,A2.L),D2
  2347.     SUBQ.B    #2,D2
  2348.     BNE.S    L09E30        ;bad name
  2349.     MOVE.B    0(A6,A2.L),D2
  2350.     MOVEQ    #6,D1
  2351.     SUBQ.B    #2,D2
  2352.     BEQ.S    L09E34
  2353.     MOVEQ    #$0C,D1
  2354.     SUBQ.B    #4,D2
  2355.     BEQ.S    L09E34
  2356.     SUBQ.B    #1,D2
  2357.     BEQ.S    L09E5C
  2358. L09E30    MOVEQ    #-12,D0        ;Bad name error
  2359.     RTS
  2360. L09E34    MOVE.L    A2,-(A7)
  2361.     MOVE.L    4(A6,A2.L),D2
  2362.     BLT.S    L09E46
  2363.     MOVEA.L    BV_VVBAS(A6),A0    ;variable values
  2364.     ADDA.L    D2,A0
  2365.     JSR    L04FE8(PC)    ;*/undomodify BSR L04FE8
  2366. L09E46    MOVEQ    #$1A,D1
  2367.     JSR    L04DF6(PC)    ;*/undomodify BSR L04DF6
  2368.     SUBA.L    BV_VVBAS(A6),A0    ;variable values
  2369.     MOVEA.L    (A7)+,A2
  2370.     MOVE.B    #$07,0(A6,A2.L)    ;set FOR LOOP index Flag
  2371.     MOVE.L    A0,4(A6,A2.L)
  2372. L09E5C:
  2373.     JSR    L0A2FE(PC)    ;*/undomodify BSR L0A2FE
  2374.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2375.     MOVE.L    A4,D0
  2376.     SUB.L    A5,D0
  2377.     MOVE.L    D7,$0C(A6,A2.L)
  2378.     MOVE.L    D7,$10(A6,A2.L)
  2379.     MOVE.L    D7,$14(A6,A2.L)
  2380.     MOVE.W    D0,$18(A6,A2.L)
  2381.     JSR    L09E88(PC)    ;*/undomodify BSR.S L09E88
  2382.                 ;*/undomodify nop
  2383.     BGT.S    L09E80
  2384.     RTS
  2385. L09E80:
  2386.     MOVEQ    #0,D5
  2387.     JMP    L09C90(PC)    ;*/undomodify BRA L09C90
  2388. L09E86    DC.B    $01
  2389. L09E87    DC.B    $40
  2390. L09E88    MOVE.L    A4,-(A7)
  2391.     MOVE.W    0(A6,A4.L),D1
  2392.     JSR    L09686(PC)    ;*/undomodify BSR L09686
  2393.     BNE.S    L09E98
  2394.     MOVEQ    #$01,D0
  2395.     BRA.S    L09EA6
  2396. L09E98    CMPI.W    #$8401,D1
  2397.     BEQ.S    L09EAA
  2398.     CMPI.W    #$8404,D1
  2399.     BEQ.S    L09EAA
  2400.     MOVEQ    #-4,D0        ;out of ange error
  2401. L09EA6    ADDQ.W    #4,A7
  2402.     RTS
  2403. L09EAA    ADDQ.W    #2,A4
  2404.     MOVEA.L    A4,A0
  2405.     MOVE.L    D4,D6
  2406.     JSR    L05A7E(PC)    ;*/undomodify BSR L05A7E
  2407.     MOVEA.L    A0,A4
  2408.     BNE.S    L09EA6
  2409.     BSR    L09F7E
  2410.     MOVE.W    0(A6,A1.L),0(A6,A2.L)
  2411.     MOVE.L    2(A6,A1.L),2(A6,A2.L)
  2412.     ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  2413.     CMPI.W    #$810B,0(A6,A4.L)
  2414.     BEQ.S    L09EF4
  2415.     MOVE.W    0(A6,A2.L),$0C(A6,A2.L)
  2416.     MOVE.L    2(A6,A2.L),$0E(A6,A2.L)
  2417.     MOVE.W    D7,$12(A6,A2.L)
  2418.     MOVE.L    D7,$14(A6,A2.L)
  2419.     MOVE.L    A4,D0
  2420.     SUB.L    (A7)+,D0
  2421.     ADD.W    D0,$18(A6,A2.L)
  2422.     BRA    L09F76
  2423. L09EF4    ADDQ.W    #2,A4
  2424.     MOVEA.L    A4,A0
  2425.     JSR    L05A7E(PC)    ;*/undomodify BSR L05A7E
  2426.     MOVEA.L    A0,A4
  2427. L09EFE    BNE.S    L09EA6
  2428.     bsr.s    L09F7E
  2429.     MOVE.W    0(A6,A1.L),$0C(A6,A2.L)
  2430.     MOVE.L    $02(A6,A1.L),$0E(A6,A2.L)
  2431.     ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  2432.     CMPI.W    #$811D,0(A6,A4.L)
  2433.     BEQ.S    L09F32
  2434.     MOVE.B    #8,$12(A6,A2.L)
  2435.     MOVE.B    L09E86(PC),$13(A6,A2.L) ;must have to do with
  2436.                       ;STEP
  2437.     MOVE.L    D7,$14(A6,A2.L)
  2438.     MOVE.B    L09E87(PC),$14(A6,A2.L) ;must have to do with
  2439.                       ;step
  2440.     BRA.S    L09F50
  2441. L09F32    ADDQ.W    #2,A4
  2442.     MOVEA.L    A4,A0
  2443.     JSR    L05A7E(PC)    ;*/undomodify BSR L05A7E
  2444.     MOVEA.L    A0,A4
  2445.     BNE.S    L09EFE
  2446.     BSR.S    L09F7E
  2447.     MOVE.W    0(A6,A1.L),$12(A6,A2.L)
  2448.     MOVE.L    $02(A6,A1.L),$14(A6,A2.L)
  2449.     ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  2450. L09F50    MOVE.L    A4,D0
  2451.     SUB.L    (A7)+,D0
  2452.     ADD.W    D0,$18(A6,A2.L)
  2453.     JSR    L04E4C(PC)    ;*/undomodify BSR L04E4C
  2454.     MOVEA.L    $0058(A6),A1    ;arith stack
  2455.     SUBQ.W    #6,A1
  2456.     MOVE.L    $02(A6,A2.L),$02(A6,A1.L)
  2457.     MOVE.W    0(A6,A2.L),0(A6,A1.L)
  2458.     JSR    L0A404(PC)    ;*/undomodify BSR L0A404
  2459.     BRA.S    L09F78
  2460.     BRA.S    L09F7A
  2461. L09F76    MOVEQ    #0,D0
  2462. L09F78    RTS
  2463. L09F7A    BRA    L09E88
  2464. L09F7E    MOVE.L    D6,D4
  2465. L09F80    BSR.S    L09F96
  2466.     MOVE.B    0(A6,A2.L),D1
  2467.     MOVE.B    1(A6,A2.L),D2
  2468.     MOVE.L    4(A6,A2.L),D0
  2469.     MOVEA.L    BV_VVBAS(A6),A2    ;variable values
  2470.     ADDA.L    D0,A2
  2471.     RTS
  2472. L09F96    MOVE.L    D4,D0
  2473.     MOVEA.L    BV_NTBAS(A6),A2    ;name table
  2474.     LSL.L    #3,D0
  2475.     ADDA.W    D0,A2
  2476.     RTS
  2477. L09FA2    TST.B    BV_SING(A6)    ;Single line execution
  2478.                 ;ON ($FF) or OFF (0)
  2479.     BEQ.S    L09FAE
  2480.     MOVEA.L    BV_TKBAS(A6),A4    ;token list
  2481.     BRA.S    L0A006
  2482. L09FAE    CMPI.W    #$840A,0(A6,A4.L)
  2483.     BEQ.S    L09FBC
  2484.     JSR    L09072(PC)    ;*/undomodify BSR L09072
  2485.     BRA.S    L09FAE
  2486. L09FBC    ADDQ.W    #2,A4
  2487. L09FBE    MOVEQ    #0,D1
  2488.     MOVEQ    #0,D2
  2489.     CMP.W    BV_LINUM(A6),D4    ;current line #
  2490.     BLE.S    L09FEC
  2491. L09FC8    CMPA.L    BV_PFP(A6),A4    ;program running pointer
  2492.     BLT.S    L09FD2
  2493.     JMP    L0A994(PC)    ;*/undomodify BRA L0A994
  2494. L09FD2    CMP.W    4(A6,A4.L),D4
  2495.     BLE.S    L0A006
  2496. L09FD8    MOVE.W    4(A6,A4.L),D2
  2497.     MOVE.W    0(A6,A4.L),D1
  2498.     ADDQ.W    #2,A4
  2499.     ADD.W    D1,BV_LENGTH(A6)    ;current length
  2500.     ADDA.W    BV_LENGTH(A6),A4    ;current length
  2501.     BRA.S    L09FC8
  2502. L09FEC    SUBA.W    BV_LENGTH(A6),A4    ;current length
  2503.     SUBQ.W    #2,A4
  2504.     MOVE.W    0(A6,A4.L),D1
  2505.     SUB.W    D1,BV_LENGTH(A6)    ;current length
  2506.     CMP.W    $04(A6,A4.L),D4
  2507.     BGT.S    L09FD8
  2508.     CMPA.L    BV_PFBAS(A6),A4    ;program file
  2509.     BGT.S    L09FEC
  2510. L0A006    MOVEQ    #0,D0
  2511.     RTS
  2512. L0A00A    CMP.B    BV_STMNT(A6),D4    ;current stmnt on line
  2513.     BLE.S    L0A01E
  2514.     JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2515.     BLT.S    L0A01E
  2516.     ADDQ.W    #2,A4
  2517.     ADDQ.B    #1,BV_STMNT(A6)    ;current stmnt on line
  2518.     BRA.S    L0A00A
  2519. L0A01E    MOVEQ    #0,D0
  2520.     RTS
  2521. L0A022    ; execute GO
  2522.     MOVEQ    #$01,D4
  2523.     BRA.S    L0A038
  2524. L0A026    ; execute ON ...
  2525.     JSR    L09876(PC)    ;*/undomodify BSR L09876
  2526.     BGE    L09CFE
  2527.     BSR.S    L0A086
  2528.     MOVE.W    0(A6,A1.L),D4
  2529.     BLE.S    L0A082
  2530.     ADDQ.W    #2,A4
  2531. L0A038    JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2532.     CMPI.B    #$0B,D1
  2533.     SEQ    D5
  2534. L0A042    MOVE.W    0(A6,A4.L),D1
  2535.     JSR    L09686(PC)    ;*/undomodify BSR L09686
  2536.     BEQ.S    L0A082
  2537.     ADDQ.W    #2,A4
  2538.     BSR.S    L0A086
  2539.     BGT.S    L0A042
  2540.     SUBQ.W    #1,D4
  2541.     BNE.S    L0A042
  2542.     MOVE.W    0(A6,A1.L),D4
  2543.     TST.B    D5
  2544.     BEQ    L094CA
  2545.     SF    BV_INLIN(A6)    ;Processing inline clause
  2546.     TST.B    BV_SING(A6)    ;Single line exection
  2547.                 ;ON ($FF) or OFF (0)
  2548.     BEQ.S    L0A078
  2549.     SF    BV_SING(A6)    ;Single line execution
  2550.                 ;ON ($FF) or OFF (0)
  2551.     MOVEA.L    BV_PFBAS(A6),A4    ;program file
  2552.     JSR    L0A966(PC)    ;*/undomodify BSR L0A966
  2553.     BNE.S    L0A07E
  2554. L0A078    JSR    L09FA2(PC)    ;*/undomodify BSR L09FA2
  2555.     SUBQ.W    #2,A4
  2556. L0A07E    MOVEQ    #0,D0
  2557.     RTS
  2558. L0A082    MOVEQ    #-$04,D0
  2559.     RTS
  2560. L0A086    MOVEA.L    A4,A0
  2561.     JSR    L05A82(PC)    ;*/undomodify BSR L05A82
  2562.     MOVEA.L    A0,A4
  2563.     BLT.S    L0A09A
  2564.     BGT.S    L0A098
  2565.     ADDQ.L    #2,BV_RIP(A6)    ;arith stack
  2566.     MOVEQ    #0,D0
  2567. L0A098    RTS
  2568. L0A09A    ADDQ.W    #4,A7
  2569.     RTS
  2570. L0A09E    JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2571.     MOVEQ    #0,D4
  2572.     MOVE.W    $02(A6,A4.L),D4
  2573.     ADDQ.W    #4,A4
  2574. L0A0AA    JSR    L09F80(PC)    ;*/undomodify BSR L09F80
  2575.     MOVEQ    #0,D0
  2576.     MOVE.B    D1,D0
  2577.     SUBQ.B    #6,D0
  2578.     BEQ.S    L0A0BC
  2579.     SUBQ.B    #1,D0
  2580.     BEQ.S    L0A0BC
  2581.     MOVEQ    #-$07,D0
  2582. L0A0BC    RTS
  2583. L0A0BE    ; execute IF
  2584.     MOVEA.L    A4,A0
  2585.     JSR    L05A7E(PC)    ;*/undomodify BSR L05A7E
  2586.     MOVEA.L    A0,A4
  2587.     BNE    L0A150
  2588.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  2589.     BLT.S    L0A0DA
  2590.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2591.     BNE.S    L0A0DA
  2592.     ST    BV_INLIN(A6)    ;Processing inline clause
  2593. L0A0DA    ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  2594.     TST.W    0(A6,A1.L)
  2595.     BNE.S    L0A14E
  2596.     MOVEQ    #0,D4
  2597. L0A0E6    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2598.     BGE.S    L0A0F2
  2599.     TST.B    BV_INLIN(A6)    ;Processing inline clause
  2600.     BNE.S    L0A14E
  2601. L0A0F2    JSR    L0A60E(PC)    ;*/undomodify BSR L0A60E
  2602.     BNE.S    L0A14E
  2603.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2604.     CMPI.B    #$81,D0
  2605.     BNE.S    L0A0E6
  2606.     ADDQ.W    #2,A4
  2607.     CMPI.B    #$03,D1
  2608.     BNE.S    L0A124
  2609.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  2610.     BLT.S    L0A120
  2611.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2612.     BNE.S    L0A120
  2613. L0A116    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2614.     BLT.S    L0A0F2
  2615.     ADDQ.W    #2,A4
  2616.     BRA.S    L0A116
  2617. L0A120    ADDQ.W    #1,D4
  2618.     BRA.S    L0A0E6
  2619. L0A124    CMPI.B    #$01,D1
  2620.     BNE.S    L0A13C
  2621.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2622.     CMPI.W    #$8103,D1
  2623.     BNE.S    L0A0E6
  2624.     TST.B    D4
  2625.     BEQ.S    L0A14E
  2626.     SUBQ.W    #1,D4
  2627.     BRA.S    L0A0E6
  2628. L0A13C    CMPI.B    #$14,D1
  2629.     BNE.S    L0A0E6
  2630.     TST.B    D4
  2631.     BEQ.S    L0A14C
  2632.     ADDQ.B    #1,BV_STMNT(A6)    ;current stmnt on line
  2633.     BRA.S    L0A0E6
  2634. L0A14C    SUBQ.W    #2,A4
  2635. L0A14E    MOVEQ    #0,D0
  2636. L0A150    RTS
  2637. L0A152    ; used to execute depending instructions
  2638.     DC.W    L09AA8-L0A190    ;END
  2639.     DC.W    L09DF2-L0A190    ;FOR
  2640.     DC.W    L0A0BE-L0A190    ;IF
  2641.     DC.W    L0A7B6-L0A190    ;REPEAT
  2642.     DC.W    L0A84A-L0A190    ;SELECT
  2643.     DC.W    L0AC00-L0A190    ;WHEN
  2644.     DC.W    L098A6-L0A190    ;DEFINE
  2645.     DC.W    $0        ;PROCEDURE:USELESS IF ALONE
  2646.     DC.W    $0        ;FUNCTION: USELESS IF ALONE
  2647.     DC.W    L0A022-L0A190    ;GO
  2648.     DC.W    $0        ;TO:USELESS IF ALONE
  2649.     DC.W    $0        ;SUB: USELESS F ALONE
  2650.     DC.W    $0        ;WHEN: USELESS IF ALONE
  2651.     DC.W    $0        ;ERROR: USELESS IF ALONE
  2652.     DC.W    $0        ;EOF
  2653.     DC.W    $0        ;INPUT
  2654.     DC.W    L0A820-L0A190    ;RESTORE
  2655.     DC.W    L0A372-L0A190    ;NEXT
  2656.     DC.W    L09C64-L0A190    ;EXIT
  2657.     DC.W    L09A4C-L0A190    ;ELSE
  2658.     DC.W    L0A026-L0A190    ;ON
  2659.     DC.W    DO_RETURn-L0A190    ;RETURN
  2660.     DC.W    $0        ;REMAINDER
  2661.     DC.W    L0A7B2-L0A190    ;DATA
  2662.     DC.W    L098C6-L0A190    ;DIM
  2663.     DC.W    L0A2FA-L0A190    ;LOCAL
  2664.     DC.W    L0A332-L0A190    ;LET
  2665.     DC.W    $0        ;THEN
  2666.     DC.W    $0        ;STEP
  2667.     DC.W    L0A7B2-L0A190    ;REMARK
  2668.     DC.W    L0A2FA-L0A190    ;MISTAKE
  2669. L0A190:
  2670.     MOVEQ    #0,D0
  2671.     MOVE.B    1(A6,A4.L),D0
  2672.     ADDQ.W    #2,A4
  2673.     ADD.B    D0,D0
  2674.     MOVE.W    L0A150(PC,D0.W),D0
  2675.     BEQ.S    L0A1A4
  2676.     JMP    L0A190(PC,D0.W)
  2677. L0A1A4    MOVEQ    #-7,D0        ;Not found
  2678.     RTS
  2679. L0A1A8    MOVEA.L    A2,A3
  2680.     ANDI.B    #$0F,1(A6,A3.L)
  2681.     MOVE.L    A3,-(A7)
  2682.     MOVE.B    $01(A6,A3.L),-(A7)
  2683.     JSR    L07A8E(PC)    ;*/undomodify BSR L07A8E
  2684.     BNE.S    L0A1E8
  2685.     CMPI.W    #$8405,D1
  2686.     BNE.S    L0A1F6
  2687.     CMPI.B    #1,1(A6,A3.L)
  2688.     BNE.S    L0A242
  2689.     MOVE.L    4(A6,A3.L),D0
  2690.     BLT.S    L0A242
  2691.     MOVEA.L    BV_VVBAS(A6),A2    ;variable values
  2692.     ADDA.L    D0,A2
  2693.     MOVE.L    D0,-(A7)
  2694.     LEA    2(A4),A0
  2695.     JSR    L06446(PC)    ;*/undomodify BSR L06446
  2696.     MOVEA.L    A0,A4
  2697.     MOVEA.L    BV_VVBAS(A6),A2    ;variable values
  2698.     ADDA.L    (A7)+,A2
  2699. L0A1E8    BNE.S    L0A244
  2700.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2701.     CMPI.W    #$8401,D1
  2702.     BNE.S    L0A242
  2703.     SF    (A7)
  2704. L0A1F6    CMPI.W    #$8401,D1
  2705.     BNE.S    L0A242
  2706.     ADDQ.W    #2,A4
  2707.     MOVE.B    (A7),D0
  2708.     MOVEA.L    A4,A0
  2709.     SUBA.L    BV_VVBAS(A6),A2    ;variable values
  2710. ; --------------------------------------------------------------
  2711. ;*/beginoverlay
  2712. ;*/note when error fix donated by Simon N Goodwin
  2713.     move.l    a2,-(a7)     ;*/note movem.l  a2/a4,-(a7)
  2714.     JSR    L05A84(PC)    ;*/undomodify BSR L05A84
  2715.     movea.l    $0028(a6),a2    ;*/note movem.l  (a7)+,a2/a4
  2716.     adda.l    (a7)+,a2     ;*/note adda.l   $0028(a6),a2
  2717.     movea.l    a0,a4        ;*/note bne.s    L0A23C
  2718.     bne.s    L0A23C        ;*/note movea.l  a0,a4
  2719. ;*/endoverlay
  2720. ; --------------------------------------------------------------
  2721.     MOVE.B    (A7)+,D0
  2722.     MOVEA.L    (A7)+,A3
  2723.     MOVE.B    D0,$01(A6,A3.L)
  2724.     JSR    BP_LET(PC)    ;*/undomodify BSR BP_LET
  2725.     BNE.S    L0A23A
  2726.     TST.W    $C8(A6)
  2727.     BEQ.S    L0A23A
  2728.     MOVE.B    0(A6,A3.L),D1
  2729.     SUBQ.B    #2,D1
  2730.     BEQ.S    L0A248
  2731.     SUBQ.B    #4,D1
  2732.     BEQ.S    L0A248
  2733.     SUBQ.B    #1,D1
  2734.     BEQ.S    L0A248
  2735. L0A23A    RTS
  2736. L0A23C    BLT.S    L0A244
  2737.     MOVEQ    #-$11,D0
  2738.     BRA.S    L0A244
  2739. L0A242    ; handling of MISTake and LOCal
  2740.     MOVEQ    #-$0C,D0
  2741. L0A244    ADDQ.W    #6,A7
  2742.     RTS
  2743. L0A248    ; initialize WHEN
  2744.     MOVE.L    A3,D4
  2745.     SUB.L    BV_NTBAS(A6),D4    ;name table
  2746.     LSR.L    #3,D4
  2747.     MOVEQ    #1,D3
  2748.     JSR    L0ACC2(PC)    ;*/undomodify BSR L0ACC2
  2749. L0A256    BNE    L0A2DA
  2750.     TST.W    $08(A6,A2.L)
  2751.     BLT.S    L0A268
  2752. L0A260    MOVEQ    #1,D3
  2753.     JSR    L0ACDA(PC)    ;*/undomodify BSR L0ACDA
  2754.     BRA.S    L0A256
  2755. L0A268    MOVE.W    BV_LINUM(A6),$08(A6,A2.L) ;current line #
  2756.     MOVE.B    BV_STMNT(A6),$0A(A6,A2.L) ;current stmnt on line
  2757.     MOVE.B    BV_INLIN(A6),$0B(A6,A2.L) ;Processing inline clause
  2758.     MOVE.W    BV_INDEX(A6),$0C(A6,A2.L) ;Name tab row of last lp
  2759.     MOVE.W    D4,-(A7)
  2760.     MOVE.W    D2,-(A7)
  2761.     MOVE.L    D1,-(A7)
  2762.     MOVE.W    $02(A6,A2.L),D4
  2763.     MOVE.B    $04(A6,A2.L),D1
  2764.     SUBA.L    BV_VVBAS(A6),A2    ;variable values
  2765.     MOVE.L    A2,-(A7)
  2766.     MOVE.B    D1,-(A7)
  2767.     TST.B    BV_SING(A6)    ;Single line execution
  2768.                 ;ON ($FF) or OFF (0)
  2769.     BEQ.S    L0A2A0
  2770.     JSR    L0958E(PC)    ;*/undomodify BSR L0958E
  2771. L0A2A0    JSR    L09FA2(PC)    ;*/undomodify BSR L09FA2
  2772.     BNE.S    L0A2F2
  2773.     JSR    L0A96A(PC)    ;*/undomodify BSR L0A96A
  2774.     BNE.S    L0A2F2
  2775.     MOVE.B    (A7)+,D4
  2776.     JSR    L0A00A(PC)    ;*/undomodify BSR L0A00A
  2777.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2778.     LEA    2(A4),A0
  2779.     JSR    L05A7E(PC)    ;*/undomodify BSR L05A7E
  2780.     MOVEA.L    A0,A4
  2781.     MOVEA.L    (A7)+,A2
  2782.     BNE.S    L0A2F6
  2783.     ADDA.L    BV_VVBAS(A6),A2    ;variable values
  2784.     ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  2785.     TST.W    0(A6,A1.L)
  2786.     BEQ.S    L0A2DE
  2787.     ADDQ.W    #8,A7
  2788.     MOVE.B    $0E(A6,A2.L),BV_INLIN(A6) ;Processing inline clause
  2789. L0A2DA    MOVEQ    #0,D0
  2790.     RTS
  2791. L0A2DE    MOVE.L    A2,-(A7)
  2792.     JSR    L09AFA(PC)    ;*/undomodify BSR L09AFA
  2793.     MOVEA.L    (A7)+,A2
  2794.     BNE.S    L0A2F6
  2795.     MOVE.L    (A7)+,D1
  2796.     MOVE.W    (A7)+,D2
  2797.     MOVE.W    (A7)+,D4
  2798.     BRA    L0A260
  2799. L0A2F2    MOVEQ    #-7,D0        ;Not found error
  2800.     ADDQ.W    #6,A7
  2801. L0A2F6    ADDQ.W    #8,A7
  2802.     RTS
  2803. L0A2FA    ; execute LOCal and MISTake
  2804.     MOVEQ    #-21,D0        ;bad line error
  2805.     RTS
  2806. L0A2FE    MOVEA.L    $04(A6,A2.L),A2
  2807.     ADDA.L    BV_VVBAS(A6),A2    ;variable values
  2808.     MOVE.W    D7,0(A6,A2.L)
  2809.     MOVE.L    D7,$02(A6,A2.L)
  2810.     MOVE.W    BV_LINUM(A6),D1    ;current line #
  2811.     MOVE.B    BV_STMNT(A6),D0    ;current stmnt on line
  2812.     CMP.W    $06(A6,A2.L),D1
  2813.     BNE.S    L0A322
  2814.     CMP.B    $0A(A6,A2.L),D0
  2815.     BEQ.S    L0A32E
  2816. L0A322    MOVE.W    D1,$06(A6,A2.L)
  2817.     MOVE.L    D7,$08(A6,A2.L)
  2818.     MOVE.B    D0,$0A(A6,A2.L)
  2819. L0A32E    MOVEQ    #0,D0
  2820.     RTS
  2821. L0A332    ; handling of LET
  2822.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2823.     CMPI.B    #$88,D0
  2824.     BNE.S    L0A36E
  2825. L0A33C    MOVEQ    #0,D4
  2826.     MOVE.W    2(A6,A4.L),D4
  2827.     ADDQ.W    #4,A4
  2828.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2829.     JSR    L09F96(PC)    ;*/undomodify BSR L09F96
  2830.     MOVE.B    0(A6,A2.L),D0
  2831.     CMPI.B    #$03,D0
  2832.     BEQ    L093E6
  2833.     CMPI.B    #$08,D0
  2834.     BEQ    L0A6F6
  2835.     MOVEQ    #$01,D5
  2836.     CMPI.B    #$04,D0
  2837.     BEQ    L094CA
  2838.     JMP    L0A1A8(PC)    ;*/undomodify BRA L0A1A8
  2839. L0A36E    MOVEQ    #-19,D0        ;not implemented error
  2840.     RTS
  2841. L0A372    ; Execute NEXT
  2842.     JSR    L0A09E(PC)    ;*/undomodify BSR L0A09E
  2843.     BLT    L0A402
  2844. L0A37A    MOVE.L    D4,D6
  2845.     CMPI.B    #$06,D1
  2846.     BEQ.S    L0A3D4
  2847.     MOVE.L    A2,-(A7)
  2848.     JSR    L04E4C(PC)    ;*/undomodify BSR L04E4C
  2849.     MOVEA.L    (A7),A2
  2850.     MOVEA.L    $0058(A6),A1    ;arith stack
  2851.     SUBA.W    #$000C,A1
  2852.     MOVE.L    $14(A6,A2.L),$02(A6,A1.L)
  2853.     BEQ.S    L0A3DE
  2854.     MOVE.W    $12(A6,A2.L),0(A6,A1.L)
  2855.     MOVE.W    0(A6,A2.L),$06(A6,A1.L)
  2856.     MOVE.L    $02(A6,A2.L),$08(A6,A1.L)
  2857.     JSR    RI_ADD(PC)    ;*/undomodify BSR RI_ADD
  2858.     BLT.S    L0A3D6
  2859.     MOVE.L    A1,BV_RIP(A6)    ;arith stack
  2860.     JSR    RI_DUP(PC)    ;*/undomodify BSR RI_DUP
  2861.     MOVEA.L    (A7),A2
  2862.     BSR.S    L0A404        ;test for end of function
  2863.     BRA.S    L0A3D6        ;error
  2864.     BRA.S    L0A3DA        ;end of loop
  2865. ; back to start of loop
  2866.     MOVEA.L    (A7)+,A2
  2867.     MOVE.W    0(A6,A0.L),0(A6,A2.L)
  2868.     MOVE.L    $02(A6,A0.L),$02(A6,A2.L)
  2869.     ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  2870. L0A3D4    BRA.S    L0A3E4
  2871. L0A3D6    ADDQ.W    #4,A7
  2872.     RTS
  2873. ; end of loop
  2874. L0A3DA    ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  2875. L0A3DE    MOVEA.L    (A7)+,A2
  2876.     MOVEQ    #$01,D3
  2877.     BRA.S    L0A3E6
  2878. L0A3E4    MOVEQ    #0,D3
  2879. L0A3E6    BSR.S    L0A44C
  2880.     BNE.S    L0A402
  2881.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2882.     BGT.S    L0A3F4
  2883.     SF    BV_INLIN(A6)    ;Processing inline clause
  2884. L0A3F4    CMPI.B    #$7F,BV_STMNT(A6) ;current stmnt on line
  2885.     BNE.S    L0A400
  2886.     SF    BV_INLIN(A6)    ;Processing in inline clause
  2887. L0A400    MOVEQ    #0,D0
  2888. L0A402    RTS
  2889. L0A404    ; test start and end of a loop
  2890.     MOVE.L    A2,-(A7)
  2891.     SUBQ.W    #6,A1
  2892.     MOVE.L    $0E(A6,A2.L),$02(A6,A1.L)
  2893.     MOVE.W    $0C(A6,A2.L),0(A6,A1.L)
  2894.     JSR    RI_SUB(PC)    ;*/undomodify BSR RI_SUB
  2895.     MOVEA.L    (A7)+,A2
  2896.     BLT.S    L0A44A
  2897.     MOVEQ    #$0D,D1
  2898.     ADD.W    0(A6,A1.L),D1
  2899.     CMP.W    $12(A6,A2.L),D1
  2900.     BGT.S    L0A42E
  2901.     LEA    $C(A2),A0
  2902.     BRA.S    L0A446
  2903. L0A42E    MOVEA.L    $0058(A6),A0    ;arith stack
  2904.     TST.B    $02(A6,A1.L)
  2905.     BLT.S    L0A440
  2906.     TST.B    $14(A6,A2.L)
  2907.     BLT.S    L0A446
  2908.     BRA.S    L0A448
  2909. L0A440    TST.B    $14(A6,A2.L)
  2910.     BLT.S    L0A448
  2911. L0A446    ADDQ.L    #2,(A7)
  2912. L0A448    ADDQ.L    #2,(A7)
  2913. L0A44A    RTS
  2914. L0A44C    ; position pointer to code after loop
  2915.     MOVE.B    BV_STMNT(A6),-(A7) ;current stmnt on line
  2916.     MOVE.L    BV_LINUM(A6),-(A7) ;current line #
  2917.     MOVE.L    A4,-(A7)
  2918.     MOVE.W    $06(A6,A2.L),D4
  2919.     JSR    L09FA2(PC)    ;*/undomodify BSR L09FA2
  2920.     BNE.S    L0A4AA
  2921.     JSR    L0A96A(PC)    ;*/undomodify BSR L0A96A
  2922.     BNE.S    L0A4AA
  2923.     MOVE.B    $0A(A6,A2.L),D4
  2924.     JSR    L0A00A(PC)    ;*/undomodify BSR L0A00A
  2925.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2926.     CMPI.W    #$8102,D1
  2927.     BEQ.S    L0A47E
  2928.     CMPI.W    #$8104,D1
  2929.     BNE.S    L0A4AA
  2930. L0A47E    ADDQ.W    #2,A4
  2931.     MOVEA.L    A4,A5
  2932.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2933.     CMP.W    $02(A6,A4.L),D6
  2934.     BNE.S    L0A4AA
  2935.     TST.B    D3
  2936.     BEQ.S    L0A4A4
  2937.     MOVEA.L    A5,A4
  2938.     ADDA.W    $18(A6,A2.L),A4
  2939.     MOVE.L    D6,D4
  2940.     JSR    L09E88(PC)    ;*/undomodify BSR L09E88
  2941.     BLT.S    L0A4AC
  2942.     BEQ.S    L0A4A4
  2943.     MOVEQ    #0,D0
  2944.     BRA.S    L0A4AC
  2945. L0A4A4    ADDA.W    #$000A,A7
  2946.     RTS
  2947. L0A4AA    MOVEQ    #-$07,D0
  2948. L0A4AC    MOVEA.L    (A7)+,A4
  2949.     MOVE.L    (A7)+,BV_LINUM(A6) ;current line #
  2950.     MOVE.B    (A7)+,BV_STMNT(A6) ;current stmnt on line
  2951.     TST.L    D0
  2952.     RTS
  2953. L0A4BA    ; initialize all variables tables procs and funcs of
  2954.     ; proc or line
  2955.     MOVE.L    A4,-(A7)
  2956.     MOVE.B    BV_SING(A6),D6    ;Single line execution
  2957.                 ;ON ($FF) or OFF (0)
  2958.     BEQ.S    L0A4CC
  2959.     MOVEA.L    BV_TKBAS(A6),A4    ;token list
  2960.     MOVEQ    #0,D5
  2961.     BRA.S    L0A4EE
  2962. L0A4CA    SF    D6
  2963. L0A4CC    TST.B    BV_EDIT(A6)    ;Program has been
  2964.                 ;edited ($ff) or not (0)
  2965.     SF    BV_EDIT(A6)    ;Program has been
  2966.                 ;edited ($ff) or not (0)
  2967.     BEQ.S    L0A4EA
  2968.     MOVEA.L    BV_PFBAS(A6),A4    ;program file
  2969. L0A4DA    TST.B    D6
  2970.     BNE.S    L0A4CA
  2971.     MOVE.W    $04(A6,A4.L),D5
  2972.     ADDQ.W    #6,A4
  2973.     CMPA.L    BV_PFP(A6),A4    ;program running pointer
  2974.     BLT.S    L0A4EE
  2975. L0A4EA    MOVEA.L    (A7)+,A4
  2976.     RTS
  2977. L0A4EE    BSR.S    L0A56C        ;omit spaces
  2978.     CMPI.B    #$88,D0
  2979.     BEQ.S    L0A526
  2980.     CMPI.B    #$81,D0
  2981.     BNE.S    L0A55C
  2982.     ADDQ.W    #2,A4
  2983.     CMPI.B    #$14,D1
  2984.     BEQ.S    L0A4EE
  2985.     CMPI.B    #$02,D1
  2986.     BNE.S    L0A50E
  2987.     BSR.S    L0A56C
  2988.     BRA.S    L0A534
  2989. L0A50E    CMPI.B    #$04,D1
  2990.     BNE.S    L0A51E
  2991.     BSR.S    L0A56C
  2992.     CMPI.B    #$88,D0
  2993.     BNE.S    L0A55C
  2994.     BRA.S    L0A534
  2995. L0A51E    CMPI.B    #$1B,D1
  2996.     BNE.S    L0A53A
  2997.     BSR.S    L0A56C
  2998. L0A526    MOVE.L    A4,D4
  2999.     ADDQ.W    #4,A4
  3000.     BSR.S    L0A56C
  3001.     CMPI.W    #$8401,D1
  3002.     BNE.S    L0A55C
  3003.     MOVEA.L    D4,A4
  3004. L0A534    MOVEQ    #$02,D1
  3005. L0A536    BSR.S    L0A57E
  3006.     BRA.S    L0A55C
  3007. L0A53A    CMPI.B    #$07,D1
  3008.     BNE.S    L0A554
  3009.     BSR.S    L0A56C
  3010.     MOVE.W    D1,D4
  3011.     ADDQ.W    #2,A4
  3012.     BSR.S    L0A56C
  3013.     MOVEQ    #$04,D1
  3014.     CMPI.B    #$08,D4
  3015.     BEQ.S    L0A536
  3016.     MOVEQ    #$05,D1
  3017.     BRA.S    L0A536
  3018. L0A554    CMPI.B    #$19,D1
  3019.     BNE.S    L0A55C
  3020.     BSR.S    L0A5CE
  3021. L0A55C    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  3022.     BGE.S    L0A568
  3023.     ADDQ.W    #2,A4
  3024.     BRA    L0A4DA
  3025. L0A568    ADDQ.W    #2,A4
  3026.     BRA.S    L0A4EE
  3027. L0A56C    MOVE.W    0(A6,A4.L),D1
  3028.     MOVE.B    0(A6,A4.L),D0
  3029.     CMPI.B    #$80,D0
  3030.     BNE.S    L0A5CC
  3031.     JMP    L09072(PC)    ;*/undomodify BRA L09072
  3032. L0A57E    MOVEQ    #0,D0
  3033.     MOVE.W    2(A6,A4.L),D0
  3034.     LSL.L    #3,D0
  3035.     MOVEA.L    BV_NTBAS(A6),A0    ;name table
  3036.     ADDA.L    D0,A0
  3037.     MOVE.B    0(A6,A0.L),D0
  3038.     CMP.B    D0,D1
  3039.     BEQ.S    L0A5BC
  3040.     SUBQ.B    #2,D0
  3041.     BLT.S    L0A5BC
  3042.     BEQ.S    L0A5AC
  3043.     SUBQ.B    #1,D0
  3044.     BEQ.S    L0A5CC
  3045.     SUBQ.B    #2,D0
  3046.     BLE.S    L0A5A6
  3047.     SUBQ.B    #3,D0
  3048.     BLT.S    L0A5AC
  3049. L0A5A6    CMPI.B    #$04,D1
  3050.     BGE.S    L0A5BC
  3051. L0A5AC    MOVEA.L    A0,A2
  3052.     MOVEM.L    D1/A0,-(A7)
  3053.     JSR    L05784(PC)    ;*/undomodify BSR L05784
  3054.     MOVEM.L    (A7)+,D1/A0
  3055.     BNE.S    L0A5CC
  3056. L0A5BC    MOVE.B    D1,0(A6,A0.L)
  3057.     SUBQ.B    #4,D1
  3058.     BEQ.S    L0A5C8
  3059.     SUBQ.B    #1,D1
  3060.     BNE.S    L0A5CC
  3061. L0A5C8    MOVE.W    D5,$04(A6,A0.L)
  3062. L0A5CC    RTS
  3063. L0A5CE    ; initialize variable in name table
  3064.     MOVEQ    #0,D3
  3065.     SUBQ.W    #2,A4
  3066. L0A5D2    MOVE.W    #$8800,D4
  3067.     BSR.S    L0A5E0
  3068.     BNE.S    L0A60C
  3069.     MOVEQ    #$03,D1
  3070.     BSR.S    L0A57E
  3071.     BRA.S    L0A5D2
  3072. L0A5E0    ; look for first variable without parenthesis
  3073.     MOVEQ    #0,D3
  3074. L0A5E2    JSR    L09072(PC)    ;*/undomodify BSR L09072
  3075.     CMP.W    D4,D1
  3076.     BNE.S    L0A5F0
  3077.     TST.B    D3
  3078.     BEQ.S    L0A60C
  3079.     BRA.S    L0A5E2
  3080. L0A5F0    CMPI.W    #$8405,D1
  3081.     BNE.S    L0A5FA
  3082.     ADDQ.B    #1,D3
  3083.     BRA.S    L0A5E2
  3084. L0A5FA    CMPI.W    #$8406,D1
  3085.     BNE.S    L0A604
  3086.     SUBQ.B    #1,D3
  3087.     BRA.S    L0A5E2
  3088. L0A604    JSR    L09686(PC)    ;*/undomodify BSR L09686
  3089.     BNE.S    L0A5E2
  3090.     MOVEQ    #$01,D1
  3091. L0A60C    RTS
  3092. L0A60E    ; point to next instruction in line
  3093.     JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  3094.     BGE.S    L0A640
  3095.     TST.B    BV_SING(A6)    ;Single line execution
  3096.                 ;ON ($FF) or OFF (0)
  3097.     BNE.S    L0A63E
  3098.     ADDQ.W    #2,A4
  3099.     CMPA.L    BV_PFP(A6),A4    ;program running pointer
  3100.     BLT.S    L0A626
  3101.     JMP    L0A994(PC)    ;*/undomodify BRA L0A994
  3102. L0A626    MOVE.W    0(A6,A4.L),D0
  3103.     ADD.W    D0,BV_LENGTH(A6)    ;current length
  3104.     MOVE.W    $04(A6,A4.L),BV_LINUM(A6) ;current line #
  3105.     MOVEQ    #$01,D0
  3106.     MOVE.B    D0,BV_STMNT(A6)    ;current stmnt on line
  3107.     ADDQ.W    #6,A4
  3108.     MOVEQ    #0,D1
  3109. L0A63E    RTS
  3110. L0A640    ADDQ.W    #2,A4
  3111.     ADDQ.B    #1,BV_STMNT(A6)    ;current stmnt on line
  3112.     MOVEQ    #0,D0
  3113.     RTS
  3114. L0A64A    ; point to according value of select
  3115.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  3116.     CMPI.W    #$8117,D1
  3117.     BEQ.S    L0A6CE
  3118.     BSR.S    L0A68C
  3119.     CMPI.W    #$810B,0(A6,A4.L)
  3120.     BEQ.S    L0A672
  3121.     BSR.S    L0A6D6
  3122.     MOVE.W    0(A6,A1.L),D0
  3123.     BEQ.S    L0A6CA
  3124.     ADDI.W    #$18,D0
  3125.     SUB.W    -6(A6,A1.L),D0
  3126.     BLE.S    L0A6CA
  3127.     BRA.S    L0A6A6
  3128. L0A672    BSR.S    L0A6D6
  3129.     TST.B    $02(A6,A1.L)
  3130.     BGT.S    L0A6A6
  3131.     ADDQ.W    #2,A4
  3132.     ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  3133.     BSR.S    L0A68C
  3134.     BSR.S    L0A6D6
  3135.     TST.B    $02(A6,A1.L)
  3136.     BLT.S    L0A6A6
  3137.     BRA.S    L0A6CA
  3138. L0A68C    MOVEA.L    A4,A0
  3139.     SUBA.L    BV_VVBAS(A6),A2    ;variable values
  3140.     MOVE.L    A2,-(A7)
  3141.     JSR    L05A7E(PC)    ;*/undomodify BSR L05A7E
  3142.     MOVEA.L    BV_VVBAS(A6),A2    ;variable values
  3143.     ADDA.L    (A7)+,A2
  3144.     MOVEA.L    A0,A4
  3145.     BEQ.S    L0A6D4
  3146.     ADDQ.W    #4,A7
  3147.     RTS
  3148. L0A6A6    ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  3149. L0A6AA    MOVE.W    0(A6,A4.L),D0
  3150.     CMPI.W    #$8404,D0
  3151.     BNE.S    L0A6B8
  3152.     ADDQ.W    #2,A4
  3153.     BRA.S    L0A64A
  3154. L0A6B8    CMPI.W    #$840A,D0
  3155.     BEQ.S    L0A6D2
  3156.     CMPI.W    #$8402,D0
  3157.     BEQ.S    L0A6D2
  3158.     JSR    L09072(PC)    ;*/undomodify BSR L09072
  3159.     BRA.S    L0A6AA
  3160. L0A6CA    ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  3161. L0A6CE    MOVEQ    #0,D0
  3162.     RTS
  3163. L0A6D2    MOVEQ    #-$01,D0
  3164. L0A6D4    RTS
  3165. L0A6D6    SUBQ.W    #6,A1
  3166.     MOVE.L    $02(A6,A2.L),$02(A6,A1.L)
  3167.     MOVE.W    0(A6,A2.L),0(A6,A1.L)
  3168.     JSR    RI_SUB(PC)    ;*/undomodify BSR RI_SUB
  3169.     BEQ.S    L0A6EC
  3170.     ADDQ.W    #4,A7
  3171. L0A6EC    RTS
  3172. L0A6EE    ; execute BASIC instruction
  3173.     MOVEA.L    $B0(A6),A4
  3174.     MOVEA.L    $B4(A6),A2
  3175. L0A6F6    SF    $B8(A6)
  3176.     MOVE.L    A4,$00B0(A6)
  3177.     MOVE.L    A2,$00B4(A6)
  3178.     MOVE.L    $04(A6,A2.L),D4
  3179.     MOVEA.L    A4,A0
  3180.     MOVE.L    BV_NTP(A6),D0    ;name table running pointer
  3181.     SUB.L    BV_NTBAS(A6),D0    ;name table
  3182.     MOVE.L    D0,-(A7)
  3183.     JSR    L0614A(PC)    ;*/undomodify BSR L0614A
  3184.     BNE.S    L0A724
  3185.     MOVE.W    0(A6,A0.L),D1
  3186.     JSR    L09686(PC)    ;*/undomodify BSR L09686
  3187.     BEQ.S    L0A732
  3188.     MOVEQ    #-$0F,D0
  3189. L0A724    MOVE.L    BV_NTBAS(A6),D1    ;name table
  3190.     ADD.L    (A7)+,D1
  3191.     MOVE.L    D1,BV_NTP(A6)    ;name table running pointer
  3192.     TST.L    D0
  3193.     RTS
  3194. L0A732    MOVE.L    A5,D0
  3195.     SUB.L    BV_NTBAS(A6),D0    ;name table
  3196.     MOVE.L    D0,-(A7)
  3197.     MOVEA.L    A0,A4
  3198.     MOVEA.L    BV_NTBAS(A6),A3    ;name table
  3199.     ADDA.L    $0004(A7),A3
  3200.     MOVEA.L    D4,A2
  3201.     MOVEA.L    BV_RIP(A6),A1    ;arith stack
  3202.     SUBA.L    BV_RIBAS(A6),A1    ;arith stack running ptr
  3203.     SUBA.L    BV_TKBAS(A6),A4    ;token list
  3204.     MOVEM.L    D5-D7/A1/A4,-(A7)
  3205.     MOVE.L    BV_LINUM(A6),-(A7) ;current line #
  3206.     MOVE.B    BV_STMNT(A6),-(A7) ;current stmnt on line
  3207.     MOVE.L    BV_INLIN(A6),-(A7) ;Processing in inline clause
  3208.     JSR    (A2)        ;call Machinecode procedure
  3209.     MOVE.L    D0,D2        ;*** Procedure return ***
  3210.     MOVE.L    (A7)+,BV_INLIN(A6) ;Processing inline clause
  3211.     MOVE.B    (A7)+,BV_STMNT(A6) ;current stmnt on line
  3212.     MOVE.L    (A7)+,BV_LINUM(A6) ;current line #
  3213.     MOVEM.L    (A7)+,D5-D7/A1/A4
  3214.     ADDA.L    BV_TKBAS(A6),A4    ;token list
  3215.     ADDA.L    BV_RIBAS(A6),A1    ;arith stack running ptr
  3216.     MOVE.L    A1,BV_RIP(A6)    ;arith stack
  3217.     MOVEA.L    BV_NTBAS(A6),A5    ;name table
  3218.     MOVEA.L    A5,A3
  3219.     ADDA.L    (A7)+,A5
  3220.     ADDA.L    (A7)+,A3
  3221.     JSR    STO_VARValue(PC)    ;*/undomodify BSR STO_VARValue
  3222.     MOVE.L    D2,D0
  3223.     TST.B    $B8(A6)        ;undo rt stack then redo
  3224.                 ;procedure
  3225.     BNE    L097E0
  3226.     RTS
  3227. L0A79C    MOVE.B    #$7F,BV_STMNT(A6) ;current stmnt on line
  3228.     MOVEQ    #0,D4
  3229.     MOVE.W    BV_INDEX(A6),D4    ;Name tab row of last lp
  3230.     JSR    L0A0AA(PC)    ;*/undomodify BSR L0A0AA
  3231.     BGE    L0A37A
  3232.     RTS
  3233. L0A7B2    ; execute DATA and REMark lines
  3234.     MOVEQ    #0,D0
  3235.     RTS
  3236. L0A7B6    ; execute a conditional repeat
  3237.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  3238.     CMPI.B    #$88,D0
  3239.     BNE.S    L0A7F0
  3240.     MOVEQ    #0,D4
  3241.     MOVE.W    2(A6,A4.L),D4
  3242.     ADDQ.W    #4,A4
  3243.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  3244.     BLT.S    L0A7D8
  3245.     MOVE.B    #1,BV_INLIN(A6)    ;Processing inline clause
  3246.     MOVE.W    D4,BV_INDEX(A6)    ;Name tab row of last lp
  3247. L0A7D8    JSR    L09F96(PC)    ;*/undomodify BSR L09F96
  3248.     MOVE.B    0(A6,A2.L),D2
  3249.     MOVEQ    #$06,D1
  3250.     SUBQ.B    #2,D2
  3251.     BEQ.S    L0A7F4
  3252.     SUBQ.B    #4,D2
  3253.     BEQ.S    L0A81C
  3254.     MOVEQ    #$1A,D1
  3255.     SUBQ.B    #1,D2
  3256.     BEQ.S    L0A7F4
  3257. L0A7F0    MOVEQ    #-$0C,D0
  3258.     RTS
  3259. L0A7F4    ; initialize conditions of REPeat loop
  3260.     MOVE.L    A2,-(A7)
  3261.     MOVE.L    4(A6,A2.L),D2
  3262.     BLT.S    L0A806
  3263.     MOVEA.L    BV_VVBAS(A6),A0    ;variable values
  3264.     ADDA.L    D2,A0
  3265.     JSR    L04FE8(PC)    ;*/undomodify BSR L04FE8
  3266. L0A806    MOVEQ    #$0C,D1
  3267.     JSR    L04DF6(PC)    ;*/undomodify BSR L04DF6
  3268.     SUBA.L    BV_VVBAS(A6),A0    ;variable values
  3269.     MOVEA.L    (A7)+,A2
  3270.     MOVE.L    A0,$04(A6,A2.L)
  3271.     MOVE.B    #$06,0(A6,A2.L)
  3272. L0A81C    JMP    L0A2FE(PC)    ;*/undomodify BRA L0A2FE
  3273. L0A820    ; execute RESTore
  3274.     CLR.W    BV_DALNO(A6)    ;Current DATA line #
  3275.     MOVEA.L    A4,A0
  3276.     JSR    L05A82(PC)    ;*/undomodify BSR L05A82
  3277.     MOVEA.L    A0,A4
  3278.     BLT.S    L0A848
  3279.     BGT.S    L0A83A
  3280.     ADDQ.L    #2,BV_RIP(A6)    ;arith stack
  3281.     MOVE.W    0(A6,A1.L),BV_DALNO(A6) ;Current DATA line #
  3282. L0A83A    MOVE.B    #$01,BV_DASTM(A6) ;Current DATA statement #
  3283.     MOVE.B    #$01,BV_DAITM(A6) ;Next DATA item to read
  3284.     MOVEQ    #0,D0
  3285. L0A848    RTS
  3286. L0A84A    ; execute conditions fo SELect
  3287.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  3288.     CMPI.W    #$8115,D1
  3289.     BNE.S    L0A85A
  3290.     ADDQ.W    #2,A4
  3291.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  3292. L0A85A    MOVEQ    #0,D4
  3293.     MOVE.W    $02(A6,A4.L),D4
  3294.     ADDQ.W    #4,A4
  3295.     JSR    L09F80(PC)    ;*/undomodify BSR L09F80
  3296.     SUBQ.B    #2,D2
  3297.     BNE.S    L0A8A0
  3298.     TST.L    D0
  3299.     BLT.S    L0A89C
  3300.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  3301.     BLT.S    L0A88C
  3302.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  3303.     BNE.S    L0A87E
  3304.     ST    BV_INLIN(A6)    ;Processing inline clause
  3305. L0A87E    JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  3306.     CMPI.W    #$8401,D1
  3307.     BNE.S    L0A88C
  3308.     ADDQ.W    #2,A4
  3309.     BRA.S    L0A892
  3310. L0A88C    JSR    L09D72(PC)    ;*/undomodify BSR L09D72
  3311.     BNE.S    L0A898
  3312. L0A892    JSR    L0A64A(PC)    ;*/undomodify BSR L0A64A
  3313.     BLT.S    L0A88C
  3314. L0A898    MOVEQ    #0,D0
  3315.     RTS
  3316. L0A89C    MOVEQ    #-17,D0        ;Error in expression
  3317.     RTS
  3318. L0A8A0    MOVEQ    #-12,D0        ;Bad name
  3319.     RTS
  3320. L0A8A4    ; supervisor of direct or programm lines
  3321.     MOVEA.L    BV_PFBAS(A6),A4    ;program file
  3322. L0A8A8    SF    BV_INLIN(A6)    ;Processing inline clause
  3323.     TST.B    BV_SING(A6)    ;Single line execution
  3324.                 ;ON ($FF) or OFF (0)
  3325.     BNE.S    L0A8B8
  3326. L0A8B2    BSR    L0A966
  3327.     BNE.S    L0A8F8
  3328. L0A8B8    MOVEQ    #1,D0
  3329.     JSR    L04E32(PC)    ;*/undomodify BSR L04E32
  3330.                 ;allocate memory
  3331.     MOVEQ    #0,D0
  3332. ; --------------------------------------------------------------
  3333. ;*/beginoverlay
  3334.     ifd    NoTas
  3335. L0A8C0:
  3336.     BSR    L0A56C        ;*/modify JSR $A56C(PC)
  3337.     CMPI.B    #$81,D0
  3338.     BNE.S    L0A8D0
  3339.     BSR    L0A190        ;*/modify JSR $A190(PC)
  3340.     BRA.S    o0A8EA        ;*/modify BRA.S $A8EA
  3341. L0A8D0:
  3342.     SUBI.B    #$88,D0        ;*/modify CMPI.B #$88,D0
  3343.     BNE.S    L0A8DC
  3344.     BSR    L0A33C        ;*/modify JSR $A33C(PC)
  3345.     BRA.S    o0A8EA        ;*/modify BRA.S $A8EA
  3346. L0A8DC:
  3347.     ADDQ.B    #$04,D0        ;*/modify CMPI.B #$84,D0
  3348.     BNE.S    o0A8E8        ;*/modify BNE.S $A8E8
  3349.     BSR    L0ABF0        ;*/modify JSR $ABF0(PC)
  3350.     BRA.S    o0A8EA        ;*/modify BRA.S $A8EA
  3351. ; test for errors and Break
  3352. o0A8E8:
  3353.     MOVEQ    #-19,D0        ;Not implemented error
  3354. o0A8EA:
  3355.     TST.L    D0
  3356.     BNE    L09BA8
  3357.     BSET    #7,BV_BRK(A6)    ;*/mend TAS BV_BRK(A6)
  3358.                 ;There has been a
  3359.                 ;break (0) or not ($80)
  3360.     BEQ    L09B90
  3361. L0A8F8:
  3362.     BSET    #7,BV_CONT(A6)    ;*/mend TAS BV_CONT(A6)
  3363.                 ;continue ($80)
  3364.                 ;or stop (0) processing
  3365.     BEQ.S    L0A938        ;*/modify BEQ.L L0A9BA
  3366.     TST.B    BV_SING(A6)    ;Single line execution
  3367.                 ;ON ($FF) or OFF (0)
  3368.     BNE.S    L0A90C
  3369.     CMPA.L    BV_PFBAS(A6),A4    ;program file
  3370.     BLE.S    L0A8A4
  3371. L0A90C:
  3372.     BSR    L09B32        ;*/modify JSR $9B32(PC)
  3373.     BGE.S    L0A95C
  3374.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  3375.     BEQ.S    L0A94E
  3376.     BLT.S    L0A924
  3377.     BSR    L0A79C        ;*/modify JSR $A79C(PC)
  3378.     TST.B    BV_INLIN(A6)    ;Processing inline clause
  3379.     BNE.S    o0A8EA        ;*/modify BNE.S L0A8EA
  3380. ;
  3381.     endc
  3382. ;
  3383.     ifnd    NoTas
  3384. L0A8C0:
  3385.     JSR    L0A56C(PC)
  3386.     CMPI.B    #$81,D0
  3387.     BNE.S    L0A8D0
  3388.     JSR    L0A190(PC)
  3389.     BRA.S    o0A8EA
  3390. L0A8D0:
  3391.     CMPI.B    #$88,D0
  3392.     BNE.S    L0A8DC
  3393.     JSR    L0A33C(PC)
  3394.     BRA.S    o0A8EA
  3395. L0A8DC:
  3396.     CMPI.B    #$84,D0
  3397.     BNE.S    L0A8E8
  3398.     JSR    L0ABF0(PC)
  3399.     BRA.S    o0A8EA
  3400. L0A8E8:
  3401.     MOVEQ    #$-13,D0
  3402. o0A8EA:
  3403.     TST.L    D0
  3404.     BNE    L09BA8
  3405.     TAS    $008F(A6)
  3406.     BEQ    L09B90
  3407. L0A8F8:
  3408.     TAS    BV_CONT(A6)
  3409.     BEQ    L0A9BA
  3410.     TST.B    $6F(A6)
  3411.     BNE.S    L0A90C
  3412.     CMPA.L    $10(A6),A4
  3413.     BLE.S    L0A8A4
  3414. L0A90C:
  3415.     JSR    L09B32(PC)
  3416.     BGE.S    L0A95C
  3417.     TST.B    $6E(A6)
  3418.     BEQ.S    L0A94E
  3419.     BLT.S    L0A924
  3420.     JSR    L0A79C(PC)
  3421.     TST.B    $6E(A6)
  3422.     BNE.S    o0A8EA
  3423. ;
  3424.     endc
  3425. ;*/endoverlay
  3426. ; --------------------------------------------------------------
  3427. ; WHEN ERROR ?
  3428. L0A924:
  3429.     TST.B    $C0(A6)
  3430.     BEQ.S    L0A93C
  3431.     TST.B    $BF(A6)
  3432.     BEQ.S    L0A94E
  3433.     JSR    BAS_CONTinue(PC)    ;*/undomodify BSR BAS_CONTinue
  3434.     ST    BV_CONT(A6)    ;continue ($80) or stop (0)
  3435. L0A938:
  3436.     JMP    L0A9BA(PC)    ;*/undomodify BRA L0A9BA
  3437. L0A93C:
  3438.     MOVE.W    BV_LINUM(A6),D4    ;current line #
  3439.     MOVEQ    #-1,D3
  3440.     JSR    L0ACC2(PC)    ;*/undomodify BSR L0ACC2
  3441.     BNE.S    L0A94E
  3442.     JSR    L09AEE(PC)    ;*/undomodify BSR L09AEE
  3443.     BRA.S    L0A90C
  3444. L0A94E    ; test for return after line end
  3445.     TST.B    BV_SING(A6)    ;Single line execution
  3446.                 ;ON ($FF) or OFF (0)
  3447.     ADDQ.W    #2,A4
  3448.     BEQ    L0A8B2
  3449.     BSR.S    L0A998
  3450.     BRA.S    L0A990
  3451. L0A95C    ADDQ.W    #2,A4
  3452.     ADDQ.B    #1,BV_STMNT(A6)    ;current stmnt on line
  3453.     BRA    L0A8B8
  3454. L0A966    ; point to first instruction in line
  3455.     SF    BV_INLIN(A6)    ;Processing inline clause
  3456. L0A96A    CLR.W    BV_LINUM(A6)    ;current line #
  3457.     TST.B    BV_SING(A6)    ;Single line execution
  3458.                 ;ON ($FF) or OFF (0)
  3459.     BNE.S    L0A98A
  3460.     CMPA.L    BV_PFP(A6),A4    ;program running pointer
  3461.     BGE.S    L0A994
  3462.     MOVE.W    0(A6,A4.L),D0
  3463.     ADD.W    D0,BV_LENGTH(A6)    ;current length
  3464.     MOVE.W    4(A6,A4.L),BV_LINUM(A6) ;current line #
  3465.     ADDQ.W    #6,A4
  3466. L0A98A    MOVE.B    #1,BV_STMNT(A6)    ;current stmnt on line
  3467. L0A990    MOVEQ    #0,D0
  3468.     RTS
  3469. L0A994    ; set flags after end of prog
  3470.     SF    BV_CONT(A6)    ;continue ($80) or stop (0)
  3471. L0A998    MOVE.W    #$FFFF,BV_NXLIN(A6) ;line # to start after
  3472.                 ;to start after
  3473.     MOVE.W    #4,BV_STOPN(A6)    ;Which stop number set
  3474.     RTS
  3475. ; execute system commands
  3476. ; Labels relativ to L0A9BA
  3477. ; NOTE: ALL following commands have been rewritten
  3478. ; by Tony Tebby - if you use TOOLKIT II you can easily
  3479. ; omit all the code that is following
  3480. L0A9A6    DC.W    L0A9F2-L0A9BA    ;CLEAR
  3481.     DC.W    L0AADC-L0A9BA    ;NEW
  3482.     DC.W    L0ABCA-L0A9BA    ;STOP
  3483.     DC.W    L0AA5E-L0A9BA    ;RUN
  3484.     DC.W    L0AADC-L0A9BA    ;LRUN
  3485.     DC.W    L0AADC-L0A9BA    ;LOAD
  3486.     DC.W    L0ABDC-L0A9BA    ;MRUN
  3487.     DC.W    L0ABDC-L0A9BA    ;MERGE
  3488.     DC.W    L0ABA6-L0A9BA    ;CONTINUE-RETRY
  3489.     DC.W    L0A9C6-L0A9BA    ;ERROR-RETURN
  3490. L0A9BA    MOVE.W    BV_STOPN(A6),D1    ;Which stop number set
  3491.     MOVE.W    L0A9A6(PC,D1.W),D1
  3492.     JMP    L0A9BA(PC,D1.W)
  3493. L0A9C6    ; restore system and error return
  3494.     JSR    L09BA8(PC)    ;*/undomodify BSR L09BA8
  3495.     MOVEA.L    BV_RTP(A6),A0    ;return table running ptr
  3496.     SF    BV_AUTO(A6)    ;Whether AUTO/EDIT
  3497.                 ;is on ($FF) or off (0)
  3498. L0A9D2    CMPA.L    BV_RTBAS(A6),A0    ;return table
  3499.     BLE.S    L0A9FC
  3500.     MOVE.B    -$08(A6,A0.L),D0
  3501.     BEQ.S    L0A9EE
  3502.     MOVE.L    -$18(A6,A0.L),D0
  3503.     ADD.L    BV_NTBAS(A6),D0    ;name table
  3504.     MOVE.L    D0,BV_NTP(A6)    ;name table running pointer
  3505.     SUBA.W    #$0010,A0
  3506. L0A9EE    SUBQ.W    #8,A0
  3507.     BRA.S    L0A9D2
  3508. L0A9F2    ; system command clear
  3509.     TST.B    BV_UNRVL(A6)    ;Need to unravel
  3510.                 ;($ff) or not (0)
  3511.     BEQ.S    L0A9FC
  3512.     JSR    L097E0(PC)    ;*/undomodify BSR L097E0
  3513. L0A9FC    BSR    L0AA88
  3514.     JSR    L056C6(PC)    ;*/undomodify BSR L056C6
  3515.     MOVEA.L    BV_NTBAS(A6),A0    ;name table
  3516. L0AA08    MOVE.B    0(A6,A0.L),D0
  3517.     SUBQ.B    #1,D0
  3518.     BEQ.S    L0AA4A
  3519.     SUBQ.B    #3,D0
  3520.     BLT.S    L0AA1C
  3521.     SUBQ.B    #2,D0
  3522.     BLT.S    L0AA52
  3523.     SUBQ.B    #2,D0
  3524.     BGE.S    L0AA52
  3525. L0AA1C    MOVE.W    2(A6,A0.L),D0
  3526.     BLT.S    L0AA4A
  3527.     BSR    L0AACC
  3528.     MOVE.B    -1(A6,A1.L),D0
  3529.     MOVEQ    #1,D1
  3530.     SUBI.B    #$25,D0
  3531.     BLT.S    L0AA38
  3532.     BGT.S    L0AA36
  3533.     ADDQ.W    #1,D1
  3534. L0AA36    ADDQ.W    #1,D1
  3535. L0AA38    MOVE.B    D1,1(A6,A0.L)
  3536.     MOVE.B    D7,0(A6,A0.L)
  3537.     MOVE.L    #$FFFFFFFF,4(A6,A0.L)
  3538.     BRA.S    L0AA52
  3539. L0AA4A    MOVE.L    D7,0(A6,A0.L)
  3540.     MOVE.L    D7,4(A6,A0.L)
  3541. L0AA52    ADDQ.W    #8,A0
  3542.     CMPA.L    BV_NTP(A6),A0    ;name table running pointer
  3543.     BLT.S    L0AA08
  3544.     ST    BV_EDIT(A6)    ;Program has been
  3545.                 ;edited ($ff) or not (0)
  3546. L0AA5E    ; execute RUN
  3547.     TST.B    BV_UNRVL(A6)    ;Need to unravel
  3548.                 ;($ff) or not (0)
  3549.     BEQ.S    L0AA80
  3550.     MOVE.W    BV_NXLIN(A6),$B4(A6) ;line # to start after
  3551.     MOVE.W    BV_STOPN(A6),$B6(A6) ;Which stop number set
  3552.     JSR    L097E0(PC)    ;*/undomodify BSR L097E0
  3553.     MOVE.W    $B4(A6),BV_NXLIN(A6)
  3554.     MOVE.W    $B6(A6),BV_STOPN(A6)
  3555. L0AA80    JSR    L0A4BA(PC)    ;*/undomodify BSR L0A4BA
  3556.     BRA    L0ABE6
  3557. L0AA88    ; clear stacks and storage places
  3558.     MOVEQ    #0,D7
  3559.     MOVE.L    D7,BV_DALNO(A6)    ;Current DATA line #
  3560.     MOVE.B    #$01,BV_DAITM(A6) ;Next DATA item to read
  3561.     MOVE.L    BV_VVBAS(A6),$2C(A6) ;variable values
  3562.     MOVE.L    #$FFFFFFFF,$CA(A6) ;
  3563.     MOVE.W    D7,$C8(A6)    ;
  3564.     MOVE.L    BV_RTBAS(A6),BV_RTP(A6) ;return table
  3565.     MOVEQ    #$58,D0
  3566. L0AAAE    MOVE.L    BV_RIBAS(A6),0(A6,D0.W) ;arith stack running ptr
  3567.     SUBQ.W    #4,D0
  3568.     CMPI.B    #$48,D0
  3569.     BGE.S    L0AAAE
  3570.     SF    $0090(A6)    ;Need to unravel
  3571.                 ;($ff) or not (0)
  3572.     MOVE.L    D7,BV_VVFREE(A6)    ;First free space in vvtable
  3573.     JSR    L04F9E(PC)    ;*/undomodify BSR L04F9E
  3574.     JMP    L04F96(PC)    ;*/undomodify BRA L04F96
  3575. L0AACC    ; point to end of name list
  3576.     MOVEA.L    BV_NLBAS(A6),A1    ;name list
  3577.     ADDA.W    D0,A1
  3578.     MOVEQ    #$01,D0
  3579.     ADD.B    0(A6,A1.L),D0
  3580.     ADDA.W    D0,A1
  3581.     RTS
  3582. L0AADC:
  3583.     MOVEA.L    BV_CHP(A6),A3    ;channel name running ptr
  3584.     MOVEA.L    BV_CHBAS(A6),A2    ;channel name
  3585.     ADDA.W    #$78,A2
  3586.     MOVE.L    A2,BV_CHP(A6)    ;channel name running ptr
  3587. L0AAEC    CMPA.L    A3,A2
  3588.     BGE.S    L0AB02
  3589.     MOVE.L    0(A6,A2.L),D0
  3590.     BLT.S    L0AAFC
  3591.     MOVEA.L    D0,A0
  3592.     MOVEQ    #2,D0        ;IO.CLOSE
  3593.     TRAP    #2
  3594. L0AAFC    ADDA.W    #$0028,A2
  3595.     BRA.S    L0AAEC
  3596. L0AB02    MOVEQ    #$10,D0        ;MT.DMODE sets or reads the
  3597.                 ;display mode
  3598.     MOVEQ    #-1,D1        ;read mode
  3599.     MOVEQ    #-1,D2        ;read display
  3600.     TRAP    #1
  3601.     MOVEQ    #$10,D0        ;MT.DMODE sets this mode
  3602.     TRAP    #1
  3603.     MOVE.L    BV_LNBAS(A6),BV_LNP(A6) ;line # table
  3604.     CLR.W    BV_LSBAS(A6)    ;Bottom line in window
  3605.     BSR    L0AA88
  3606.     MOVE.L    BV_PFBAS(A6),BV_PFP(A6) ;program file
  3607.     MOVEQ    #0,D0
  3608.     MOVEQ    #0,D5
  3609.     MOVEA.L    BV_NTBAS(A6),A0    ;name table
  3610.     MOVEQ    #8,D1
  3611. L0AB2C    CMPA.L    BV_NTP(A6),A0    ;name table running pointer
  3612.     BEQ.S    L0AB84
  3613.     CMP.B    0(A6,A0.L),D1
  3614.     BGT.S    L0AB42
  3615.     TST.B    D5
  3616.     BNE.S    L0AB50
  3617.     MOVE.W    2(A6,A0.L),D0
  3618.     BRA.S    L0AB80
  3619. L0AB42    TST.B    D5
  3620.     BNE.S    L0AB80
  3621.     MOVEA.L    A0,A2
  3622.     BSR.S    L0AACC
  3623.     MOVEA.L    A1,A3
  3624.     ST    D5
  3625.     BRA.S    L0AB80
  3626. L0AB50    MOVE.L    0(A6,A0.L),0(A6,A2.L)
  3627.     MOVE.L    $04(A6,A0.L),$04(A6,A2.L)
  3628.     MOVE.W    $02(A6,A2.L),D0
  3629.     BSR    L0AACC
  3630.     SUBA.W    D0,A1
  3631.     MOVE.L    A3,D2
  3632.     SUB.L    BV_NLBAS(A6),D2    ;name list
  3633.     MOVE.W    D2,$02(A6,A2.L)
  3634.     ADDQ.W    #8,A2
  3635. L0AB72    MOVE.B    0(A6,A1.L),0(A6,A3.L)
  3636.     ADDQ.W    #1,A1
  3637.     ADDQ.W    #1,A3
  3638.     SUBQ.W    #1,D0
  3639.     BGT.S    L0AB72
  3640. L0AB80    ADDQ.W    #8,A0
  3641.     BRA.S    L0AB2C
  3642. L0AB84    TST.B    D5
  3643.     BEQ.S    L0AB90
  3644.     MOVE.L    A2,BV_NTP(A6)    ;name table running pointer
  3645.     MOVE.L    A3,BV_NLP(A6)    ;name list running pointer
  3646. L0AB90    JSR    L04F9A(PC)    ;*/undomodify BSR L04F9A
  3647.     JSR    L04F8E(PC)    ;*/undomodify BSR L04F8E
  3648.     JSR    L04F92(PC)    ;*/undomodify BSR L04F92
  3649.     JSR    L04F8A(PC)    ;*/undomodify BSR L04F8A
  3650.     JSR    L056C6(PC)    ;*/undomodify BSR L056C6
  3651.     BRA.S    L0ABC4
  3652. L0ABA6    ; execute RETRY or CONTINUE
  3653.     MOVE.W    BV_CNLNO(A6),BV_NXLIN(A6) ;Line to CONTINUE from
  3654.     MOVE.B    BV_CNSTM(A6),$8A(A6) ;Statement to CONTINUE from
  3655.     MOVE.W    #$FFFF,BV_CNLNO(A6) ;Line to CONTINUE from
  3656.     MOVE.B    BV_CNINL(A6),BV_INLIN(A6) ;CONTINUE Inline loop flg
  3657.     MOVE.W    BV_CNIND(A6),BV_INDEX(A6) ;Inline loop indx
  3658. L0ABC4    SF    BV_COMLN(A6)    ;Command line saved ($ff)
  3659.                 ;or not (0)
  3660.     BRA.S    L0ABEC
  3661. L0ABCA    ; execute STOP
  3662.     TST.B    $C0(A6)
  3663.     SF    $C0(A6)
  3664.     BNE.S    L0ABE6
  3665.     MOVEQ    #0,D0
  3666.     JSR    L09B5E(PC)    ;*/undomodify BSR L09B5E
  3667.     BRA.S    L0ABEC
  3668. L0ABDC    ; execute MRUN or MERGE
  3669.     TST.B    BV_UNRVL(A6)    ;Need to unravel
  3670.                 ;($ff) or not (0)
  3671.     BEQ.S    L0ABE6
  3672.     JSR    L097E0(PC)    ;*/undomodify BSR L097E0
  3673. L0ABE6    MOVE.B    BV_SING(A6),BV_COMLN(A6) ;Single line execution
  3674.                 ;ON ($FF) or OFF (0)
  3675. L0ABEC    MOVEQ    #0,D0
  3676.     RTS
  3677. L0ABF0    ; handling of lines starting with =
  3678.     CMPI.W    #$8401,D1
  3679.     BNE.S    L0ABFC
  3680.     ADDQ.W    #2,A4
  3681.     JMP    L09CFE(PC)    ;*/undomodify BRA L09CFE
  3682.                 ;search end of SELect
  3683. L0ABFC    MOVEQ    #0,D0
  3684.     RTS
  3685. L0AC00    ; execute WHEN
  3686.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  3687.     CMPI.W    #$810E,D1
  3688.     BNE.S    L0AC32
  3689.     MOVE.W    BV_LINUM(A6),$00BC(A6) ;current line #
  3690.     MOVE.B    BV_STMNT(A6),$00BE(A6) ;current stmnt on line
  3691.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  3692.     SEQ    $00BF(A6)
  3693.     BEQ.S    L0AC28
  3694.     MOVEQ    #$06,D2
  3695.     JMP    L098A8(PC)    ;*/undomodify BRA L098A8
  3696. L0AC26    ADDQ.W    #2,A4
  3697. L0AC28    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  3698.     BGE.S    L0AC26
  3699. L0AC2E    MOVEQ    #0,D0
  3700.     RTS
  3701. L0AC32    ; WHENvar
  3702.     MOVE.W    2(A6,A4.L),D4
  3703.     ADDQ.W    #4,A4
  3704.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  3705.     CMPI.B    #$85,D0
  3706.     BEQ.S    L0AC54
  3707. L0AC42:
  3708.     MOVEQ    #$01,D3
  3709.     JSR    L0ACC2(PC)    ;*/undomodify BSR.S L0ACC2
  3710.                 ;*/undomodify nop
  3711.     BNE.S    L0AC2E
  3712.     ST    0(A6,A2.L)
  3713.     SUBQ.W    #1,$C8(A6)
  3714.     BRA.S    L0AC42
  3715. L0AC54:
  3716.     MOVEQ    #$01,D3
  3717.     JSR    L0ACC2(PC)    ;*/undomodify BSR.S L0ACC2
  3718.                 ;*/undomodify nop
  3719. L0AC5A:
  3720.     BNE.S    L0AC6C
  3721.     MOVE.W    BV_LINUM(A6),D0    ;current line #
  3722.     CMP.W    $02(A6,A2.L),D0
  3723.     BEQ.S    L0AC76
  3724.     JSR    L0ACDA(PC)    ;*/undomodify BSR.S L0ACDA
  3725.                 ;*/undomodify nop
  3726.     BRA.S    L0AC5A
  3727. L0AC6C:
  3728.     MOVEQ    #0,D3
  3729.     JSR    L0ACC2(PC)    ;*/undomodify BSR.S L0ACC2
  3730.                 ;*/undomodify nop
  3731.     ADDQ.W    #1,$00C8(A6)
  3732. L0AC76:
  3733.     MOVE.W    D4,0(A6,A2.L)
  3734.     MOVE.W    BV_LINUM(A6),$02(A6,A2.L) ;current line #
  3735.     MOVE.B    BV_STMNT(A6),$04(A6,A2.L) ;current statement
  3736.     MOVE.W    BV_LINUM(A6),$06(A6,A2.L) ;current line #
  3737.     MOVE.B    #$7F,$05(A6,A2.L)
  3738.     CLR.L    $0A(A6,A2.L)
  3739.     ST    $08(A6,A2.L)
  3740.     MOVE.L    A2,-(A7)
  3741.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  3742.     MOVEA.L    (A7)+,A2
  3743.     SEQ    $0E(A6,A2.L)
  3744.     BEQ.S    L0AC28
  3745.     MOVEQ    #$06,D2
  3746.     MOVE.L    A2,-(A7)
  3747.     JSR    L098A8(PC)    ;*/undomodify BSR L098A8
  3748.     MOVE.L    (A7)+,D2
  3749.     MOVE.W    BV_LINUM(A6),$06(A6,A2.L) ;current line #
  3750.     MOVE.B    BV_STMNT(A6),$05(A6,A2.L) ;current stmnt on line
  3751.     BRA    L0AC2E
  3752. L0ACC2    MOVE.W    $00C8(A6),D2
  3753.     BEQ.S    L0AD06
  3754.     BSR.S    L0AD10
  3755. L0ACCA    MOVE.W    0(A6,A2.L),D0
  3756.     BLT.S    L0ACEC
  3757.     TST.B    D3
  3758.     BLT.S    L0ACF2
  3759.     BEQ.S    L0ACDE
  3760.     CMP.W    D0,D4
  3761.     BEQ.S    L0ACFE
  3762. L0ACDA    SUBQ.W    #1,D2
  3763.     BEQ.S    L0AD02
  3764. L0ACDE    ADDA.W    #$0010,A2
  3765.     SUBI.L    #$00000010,D1
  3766.     BGE.S    L0ACCA
  3767.     BRA.S    L0AD26
  3768. L0ACEC    TST.B    D3
  3769.     BNE.S    L0ACDE
  3770.     RTS
  3771. L0ACF2    CMP.W    $06(A6,A2.L),D4
  3772.     BNE.S    L0ACDA
  3773.     TST.W    $08(A6,A2.L)
  3774.     BLT.S    L0ACDA
  3775. L0ACFE    MOVEQ    #0,D0
  3776.     RTS
  3777. L0AD02    MOVEQ    #-$01,D0
  3778.     RTS
  3779. L0AD06    TST.B    D3
  3780.     BNE.S    L0AD02
  3781.     TST.L    $CA(A6)        ;
  3782.     BLT.S    L0AD26
  3783. L0AD10    MOVEA.L    BV_VVBAS(A6),A2    ;variable values
  3784.     ADDA.L    $CA(A6),A2    ;
  3785.     MOVE.L    0(A6,A2.L),D1
  3786.     SUBI.L    #$14,D1
  3787.     ADDQ.W    #4,A2
  3788.     RTS
  3789. L0AD26    MOVE.L    $CA(A6),D1    ;
  3790.     BGE.S    L0AD32
  3791.     MOVEQ    #0,D1
  3792.     MOVEQ    #0,D0
  3793.     BRA.S    L0AD3C
  3794. L0AD32    MOVEA.L    BV_VVBAS(A6),A2    ;variable values
  3795.     ADDA.L    D1,A2
  3796.     MOVE.L    0(A6,A2.L),D0
  3797. L0AD3C    ADDI.L    #$140,D1
  3798.     MOVE.L    A2,-(A7)
  3799.     MOVE.L    D0,-(A7)
  3800.     JSR    L04DF6(PC)    ;*/undomodify BSR L04DF6
  3801.     MOVE.L    (A7)+,D0
  3802.     MOVEA.L    (A7)+,A2
  3803.     MOVE.L    D1,0(A6,A0.L)
  3804.     MOVE.L    A0,-(A7)
  3805.     SUB.L    D0,D1
  3806. L0AD56    ADDQ.W    #4,A2
  3807.     ADDQ.W    #4,A0
  3808.     SUBQ.W    #4,D0
  3809.     BLE.S    L0AD66
  3810.     MOVE.L    0(A6,A2.L),0(A6,A0.L)
  3811.     BRA.S    L0AD56
  3812. L0AD66    MOVE.L    A0,-(A7)
  3813. L0AD68    ST    0(A6,A0.L)
  3814.     ADDA.W    #$10,A0
  3815.     SUBI.L    #$10,D1
  3816.     BGT.S    L0AD68
  3817.     MOVE.L    $CA(A6),D1
  3818.     BLT.S    L0AD8C
  3819.     MOVEA.L    BV_VVBAS(A6),A0    ;variable values
  3820.     ADDA.L    D1,A0
  3821.     MOVE.L    0(A6,A0.L),D1
  3822.     JSR    L04FE8(PC)    ;*/undomodify BSR L04FE8
  3823. L0AD8C    MOVEA.L    (A7)+,A2
  3824.     MOVE.L    (A7)+,D1
  3825.     SUB.L    BV_VVBAS(A6),D1    ;variable values
  3826.     MOVE.L    D1,$CA(A6)
  3827.     RTS
  3828. ; --------------------------------------------------------------
  3829. ;*/endfile
  3830.